15201315716 发表于 2014-8-4 22:56:04

求助为何链表编译通过,排序这个功能却不能工作?

求助为何链表编译通过,排序(sort_list)这个功能却不能工作?
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct Grade
{
   int data;            
   struct Grade * pNext;
}GRADE,* PGRADE;

PGRADE create_list(void);
void traverse_list(PGRADE pHead);
bool is_empty(PGRADE pHead);
int length_list(PGRADE pHead);
void sort_list(PGRADE);

int main(void)
{
      PGRADE pHead=create_list();
      if(is_empty(pHead))
                printf("The list is emoty!\n");
      else
            traverse_list(pHead);
      int len = length_list(pHead);    //************非常重要      
      printf("链表长度是:%d \n",len);
      sort_list(pHead);
      traverse_list(pHead);
      return 0;
}

PGRADE create_list(void)
{
      int i;
      int len;
      int val;
      PGRADE pHead=(PGRADE)malloc(sizeof(GRADE));
      printf("please enter the number of elements in your list: ");
      scanf("%d",&len);

      PGRADE pTail=pHead;
      pTail->pNext=NULL;

    for(i=0;i<len;i++)
      {
   PGRADE pNew=(PGRADE)malloc(sizeof(GRADE));
   printf("The %d th number is : \n",i+1);
         scanf("%d",&val);
         pNew->data=val;
         pNew->pNext=NULL;
         pTail->pNext=pNew;
   pTail=pNew;
      }
      return pHead;
}

void traverse_list(PGRADE pHead)
{
PGRADE p=pHead->pNext;
while(NULL!=p)
{
          printf("%d ",p->data);
          p=p->pNext;
}
printf("\n");
}

bool is_empty(PGRADE pHead)
{
if(pHead->pNext==NULL)
          return true;
else
          return false;
}

int length_list(PGRADE pHead)
{
      PGRADE p=pHead->pNext;
    int len=0;
      while(NULL!=p)   //*********不是p->pNext
      {
                ++len;
                p=p->pNext;
      }
      returnlen;
}

void sort_list(PGRADE pHead)
{
   int i,j,t;
   PGRADE p,q;
   int len=length_list(pHead);
   for(i=0,p=pHead->pNext;i<len-1;++i,p=p->pNext)
   {
         for(j=j+1,q=p->pNext;j<len;++j,q=q->pNext)
         {
               if(p->data>q->data)
               {
                     t=p->data;
                     p->data=q->data;
                     q->data=t;
               }
         }
   }
return;
}


15201315716 发表于 2014-8-4 23:06:01

求助求助!!!

牡丹花下死做鬼 发表于 2014-8-4 23:10:49

{:7_176:}
你这是给出一堆代码让别人找错误么

15201315716 发表于 2014-8-4 23:15:36

牡丹花下死做鬼 发表于 2014-8-4 23:10
你这是给出一堆代码让别人找错误么

关键是编译和逻辑查了半天没错误啊。,。。。就是运行到排序就不行了。。。。前面的功能都没问题

牡丹花下死做鬼 发表于 2014-8-4 23:17:50

15201315716 发表于 2014-8-4 23:15
关键是编译和逻辑查了半天没错误啊。,。。。就是运行到排序就不行了。。。。前面的功能都没问题

那还是给出一堆代码让人找错啊

15201315716 发表于 2014-8-4 23:23:35

牡丹花下死做鬼 发表于 2014-8-4 23:17
那还是给出一堆代码让人找错啊

那你会不会呢?求助

牡丹花下死做鬼 发表于 2014-8-4 23:26:42

15201315716 发表于 2014-8-4 23:23
那你会不会呢?求助

我想说的是你去看看C/C++最上面的规则

沉默默 发表于 2014-8-5 00:25:50

又是没有注释

15201315716 发表于 2014-8-5 04:17:48

牡丹花下死做鬼 发表于 2014-8-4 23:26
我想说的是你去看看C/C++最上面的规则

我想说呵呵
页: [1]
查看完整版本: 求助为何链表编译通过,排序这个功能却不能工作?