求一个链表程序 c高手请进

李万鹏 2009-10-06 02:59:13
单链表中各结点存放一个数,请按升序排列
谢谢 各位大虾
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
snakeloveist 2009-10-06
  • 打赏
  • 举报
回复

#include<stdio.h>

typedef struct node{
char data;
struct node *next;
}Link;

void
display(Link *h)
{
Link *t;
t=h->next;
while(t!=NULL)
{
printf("%d->",t->data);
t=t->next;
}
}
Link *
creat_link()
{
int run=1,v,i=1;
Link *h,*t,*s;
h=(Link *)malloc(sizeof(Link));
if(NULL==h)
exit(1);
t=h;
while(run)
{
printf("please input the %drd node vlaue:",i++);
scanf("%d",&v);
if(v!=-1) //输入-1表示链表结束
{
s=(Link*)malloc(sizeof(Link));
if(NULL==s)
exit(1);
s->data=v;
t->next=s;
t=s;
}
else
run=0;
}
t->next=NULL;

printf("before sort,the link is :");
display(h);
return h;
}

void
sort(Link *h)
{
Link *r,*p,*q;
if(h!=NULL)
{
p=h->next;
r=p->next;
p->next=NULL;
while(r!=NULL)
{
q=h;
p=r->next;
while(q->next!=NULL&&q->next->data<r->data)
q=q->next;
r->next=q->next;
q->next=r;
r=p;
}
}
printf("After sort the link is:");
display(h);
}
int
main()
{
sort(creat_link());
return 0;

}
t1397018 2009-10-06
  • 打赏
  • 举报
回复
冒泡阿
初学都得会的
GoonYangXiaofang 2009-10-06
  • 打赏
  • 举报
回复
遍历过去,冒泡就可以。
meihuakai 2009-10-06
  • 打赏
  • 举报
回复
这个很简单的啊,你可以建立一个辅助链表,每次找链表中最小的数的节点插入到新链表中,自己尝试写下,不难的
李万鹏 2009-10-06
  • 打赏
  • 举报
回复
本人初学数据结构 希望大虾帮一下 入门
arong1234 2009-10-06
  • 打赏
  • 举报
回复
这个都不自己搞定,学什么编程?这是最基础的数据结构问题

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧