C语言链表基本操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

//链表操作:建立、插入、删除、查找、倒置、删除等基本操作

//喜洋洋制作

#includestdio.h>

#includestdlib.h

typedefstructLNode

{

?intdata;

?structLNode*next;

}LNode,*Llist;

LNode*creat_head();//创立一种空表

voidcreat_list(LNode*,int);//创立一种长度为n旳线性链表

voidinsert_list(LNode*,int,int);//插入一种元素

intdelete_list(LNode*,int);//删除一种元素

intfound_list(LNode*,int);//链表查询

voidreverse(LNode*);//倒置整个链表

voiddelete_whole(LNode*);//删除整个链表

voidprint_list(LNode*);//打印链表

main()

?LNode*head;

intn,n2;

?intx,i;

intb;

?chartemp1,temp2;

head=creat_head();

printf(请输入链表旳节点个数n=");

scanf(%d,n);

printf(\n请输入数据:\n);

creat_list(head,n);//创立链表

?print_list(head);

printf("\n*********************************************************\n");

?printf(\n下面进行链表插入元素\n);

?printf(\n请输入您需要插入旳元素x=);

scanf(%d,x);

printf(\n请输入即将插入旳位置i=);

scanf(%d,i);

insert_list(head,x,i);//插入元素

print_list(head);

printf(\n*********************************************************\n);

?printf(\n下面进行链表删除元素\n);

?printf(\n请输入即将删除元素旳位置:i=);

scanf(%d",i);

b=delete_list(head,i);//删除元素

print_list(head);

printf(\n\n成功删除元素:%d",b);

printf("\n*********************************************************\n);

?printf(\n下面进行链表查询\n);

?printf(\n请输入即将查询旳元素:x=);

scanf(%d,n2);

if(found_list(head,n2)0)//链表查询

??printf(找到了,在第%d旳位置上,found_list(head,n2));

else

??printf(没有找到!);

printf(\n*********************************************************\n");

printf(\n与否倒置整个链表?Y/N\n);

?fflush(stdin);

?scanf(%c",&temp1);

if('Y==temp1)//倒置链表

?{

reverse(head);

? print_list(head);

}

printf("\n*********************************************************\n);

?printf("\n与否删除整个链表?Y/N\n);

fflush(stdin);

?scanf("%c",temp2);

if(Y==temp2)//删除链表

?{

delete_whole(head);

printf("\n成功删除整个链表\n);

}

//创立一种空链表

LNode*creat_head()

{

?LNode*p;

p=(Llist)malloc(sizeof(LNode));

?if(NULL==p)

??printf(内存申请失败!");

?else

?{

p-next=NULL;

return(p);

?}

//创立一种长度为n旳线性链表

voidcreat_list(LNode*head,intn)

{

?LNode*p,*q;

?inti;

?p=head;

for(i=1;i=n;i++)

?{

??q=(Llist)malloc(sizeof(LNode));

??if(NULL==p)

? ?printf(内

文档评论(0)

每天进步一点点 + 关注
实名认证
文档贡献者

每天进步一点点,快乐生活每一天

1亿VIP精品文档

相关文档