| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3551 人关注过本帖
标题:[求助]单链表插入排序
只看楼主 加入收藏
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
马甲??

奋斗改变一切!!
2006-06-01 18:08
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 

soft_wind 大哥

你那程序在VC++上也运行不了啊!


奋斗改变一切!!
2006-06-01 18:09
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
恼啦,还是不能正常运行!!

奋斗改变一切!!
2006-06-01 19:56
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

晕,上次改的是错的,不好意思.
看您的程序还不如我自己写一个,
下面这个是基本按您的思路去做的,
不过,我不喜欢这样,弄得我改了好久!
建成一个空表头就简单一些,如果改成双链表那就更简单一些.
#include <stdio.h>
typedef struct NODE
{
int num;
struct NODE *link;
}Node;
int flag=1,tag=0;
Node *sort(Node *head);
int main()
{
Node *head=NULL,*p=NULL,*q=NULL;
int data;
printf("Please input the number:");
scanf("%d",&data);
while(data)
{
if(flag)
{
head=(Node *)malloc(sizeof(Node));
head->num=data;
head->link=NULL;
flag=0;
q=head;
}
else
{
p=(Node *)malloc(sizeof(Node));
p->link=NULL;
p->num=data;
q->link=p;
q=p;
}
scanf("%d",&data);
}
q=head;
while(q)
{
printf("%4d",q->num);
q=q->link;
}
printf("\n\n");
getch();

head=sort(head);
while(head)
{
printf("%4d",head->num);
head=head->link;
}
printf("\n");
getch();

}
Node *sort(Node *head)
{
Node *p=NULL,*q=NULL,*pr=NULL,*prepr=NULL,*oncehead=head;
q=oncehead;
while(q->link)
{
for(p=q;p;p=p->link)
{
if(!flag)
{
pr=p;
flag=1;
}
else
if(pr->num>p->num)
pr=p;
}
flag=0;
if(pr==oncehead)
{
if(!tag)
head=q;
prepr=oncehead;
q=oncehead=oncehead->link;
tag=1;
}
else
{
Node *pt=oncehead;
while(pt->link!=pr)
pt=pt->link;
pt->link=pr->link;
if(!tag)
{
head=prepr=pr;
pr->link=oncehead;
tag=1;
}
else
{
prepr->link=pr;
pr->link=oncehead;
prepr=pr;
}
}
}
return head;
}



您再帮我看看有毛病没,遇到链表,我这脑子就不好使,呵呵


对不礼貌的女生收钱......
2006-06-03 08:42
快速回复:[求助]单链表插入排序
数据加载中...
 
   



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

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