c语言链表排序插入删除,c语言 单链表的创建 删除 插入 排序 求调试 、

已结贴√

问题点数:20 回复次数:4

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

c语言 单链表的创建 删除 插入 排序 求调试 、

#include

#include

typedef struct Node

{

int    data;

struct Node * next;

}   Node,* LinkList;

void  InitList(LinkList * L,int e);                  //charu

void  GreatFormTail(LinkList * L);             //chuanjian

void  Out(LinkList * L);                       //shuchu

int   DelList(LinkList * L);  //shanchu

void main()

{     Node * L;

//LinkList L;

int m=0,i=0,e=0;

// LinkList L;

printf("请输入您要进行的操作的序号:");

printf("1 输入数据\n 2 插入数据\n 3 删除数据");

scanf("%d",&m);

switch( m )

{ case  1:   GreatFormTail( L );       break;

case  2:   printf("输入一个整形数据:");

scanf("%d",&e);

InItList( L , e);         break;

case  3:   DelList( L);            break;

default:   printf("输入有误,请重新输入");

}

}

//------------------------------------------------------------ 创建------------------------

void GreatFormTail(Node * L)

{  Node * r,* s;

int flag=1,c=0;

r=L;

while(flag)

{      printf("请输入整形数据,按ENTER结束。");

scanf("%d",&c);

if(c!='\r')

{   s=(Node *)malloc(sizeof(Node));

s->data=c;

r->next=s;

r=s;

}

else

{

flag=0;

r->next=NULL;

}

}

}

//----------------------------------------------插入---------------------------------

int InItList(Node * L,int  e )   //插入

{    Node * pre, * s;

s=L->next;

while(s!=NULL)

{

if(edata))

{  pre=(Node *)malloc(sizeof(Node));

pre->data=e;

pre->next=s->next;

s->next=pre;

}

s=s->next;

}

return e;

}

//------------------------------删除-----------------------

void DelList(Node * L)

{    Node * pre,* r;

int i=0,k=1,e=0;

pre=L;

printf("请输入你要删除的数据序号:");

scanf("%4d",&i);

while(pre->next!=NULL&&k

{  pre=pre->next;

k=k+1;

}

if(!(pre->next))

{  printf("删除的位置不合法!");

//return 0;

}

r=pre->next;

pre->next=r->next;

e=r->data;

free(r);

}

//------------------------------输出且排序----------------------------

void Out(Node * L)

{

Node * s;

Node * b;

Node * c;

Node * f;

int a=0,j=0,k=0;

s=L;

s=s->next;

b=(Node *)malloc(sizeof(Node));

c=(Node *)malloc(sizeof(Node));

while(s->next!=NULL)

{

s=s->next;

k++;

}

for(j=0;j

{

for(a=0;a

{

b->data=s->data;

s=s->next;

if(s->datadata)

{

c->data=b->data;

b->data=s->data;

s->data=c->data;

}

else break;

}

s=s->next;

while(s!=NULL)

{

printf("%4d",s->data);

s=s->next;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值