| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 976 人关注过本帖
标题:C语言链表排序问题,我总是排不好,本人菜鸟,勿怪
取消只看楼主 加入收藏
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
结帖率:66.67%
收藏
 问题点数:0 回复次数:6 
C语言链表排序问题,我总是排不好,本人菜鸟,勿怪
以下贴出我的源代码,其它函数没有问题,可能编译和正常运行,可是sort_link函数就有错误了
#include "stdio.h"
#include "stdlib.h"
struct node
{int data;
 char name[10];
 struct node *next;
};
typedef struct node LINK;
#define MAL (LINK *)malloc(sizeof(LINK))
LINK *creat_link()
{LINK *head,*s,*r;
 r=head=MAL;
 s=MAL;
 printf("PLease input data and name:");
 scanf("%d%s",&s->data,s->name);
 while(1)
   {r->next=s;
   r=s;
   s=MAL;
   printf("Please input data and name:");
   setbuf(stdin,NULL);
   scanf("%d",&s->data);
   if(s->data==-1)
      break;
   setbuf(stdin,NULL);
   scanf("%s",s->name);
  }
 r->next=0;
 return head;
}
void print_link(LINK *head)
{
   if(head->next==0)
      printf("Link is NULL!");
   else
      for(head=head->next;head!=0;head=head->next)
          printf("%d %s\n",head->data,head->name);
}
LINK *sort_link(LINK *head)
{LINK *q,*p,*temp;
  for(q=head;q->next!=0;q=q->next)
         for(p=q->next;p!=0;p=p->next)
                 if(q->next->data>p->next->data)
                  {temp=p;
                    q->next=p->next;
                    q->next=temp;
                    temp->next=p;
                  }/*就是这里了,我总是写错,不知道该怎么改?*/
 print_link(head);
}
main()
{LINK *head;
 head=creat_link();
 print_link(head);
 sort_link(head);
 printf("Enter anykey to exit. . .");
 setbuf(stdin,NULL);
 getchar();
}
搜索更多相关主题的帖子: C语言 
2011-07-12 00:36
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
收藏
得分:0 
求大神啊

你若安好便是晴天
2011-07-12 00:36
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
收藏
得分:0 
回复 3楼 多布斯的喵喵
额,这个高手那你接下来还是先说说这个sort_link函数吧,我给改成这样了,可是还是不能排序成功
LINK *sort_link(LINK *head)
{LINK *q,*h,*p,*temp;
  int n=0;
  for(q=head;q->next!=0;q=q->next)
          for(h=q,p=q->next;p!=0;p=p->next)
            {if(n)
               {n=0;
                 h->next=temp;
                 temp->next=p;
               }
             if(h->next->data>p->next->data)
              {n=1;
                temp=p;
                h->next=p->next;
              }
             h=p;
            }
 print_link(head);
}
高手帮帮忙好吗

你若安好便是晴天
2011-07-12 21:33
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
收藏
得分:0 
回复 3楼 多布斯的喵喵
貌似那个输入->name前我没有加&

你若安好便是晴天
2011-07-12 21:35
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
收藏
得分:0 
回复 6楼 版主是SB
我->name前没加&

你若安好便是晴天
2011-07-12 22:48
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
收藏
得分:0 
回复 8楼 赵立华
额,那个大神,你这个貌似是交换数据了吧,我要的是交换节点

你若安好便是晴天
2011-07-13 01:54
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
收藏
得分:0 
回复 10楼 ansic
除了这个能不能再说点什么

你若安好便是晴天
2011-07-13 21:03
快速回复:C语言链表排序问题,我总是排不好,本人菜鸟,勿怪
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017287 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved