单链表建立、删除、查找等.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单链表建立、删除、查找等

单链表各种运算(建表、插入、删除、查找、求表长、合并)作者:rocky Email:whg841001@126.com#includestdio.h/*单链表操作(建表、插入、删除、查找、求表长),王红刚2009/06/21完成*/#includestdlib.h/*程序只用作学习交流,如要转载请注明出处!!·*/#include malloc.h#define ERROR 0#define OK 1typedef char ElemType;typedef struct Node? {?ElemType data;?struct Node *next;}Node,*LinkList;/*LinkList为结构指针类型,用来说明头指针变量*/void initlinklist(LinkList *L)/*初始化单链表*/{?*L=(LinkList)malloc(sizeof(Node)); ?(*L)-next=NULL;}void? Create(LinkList L)/*建立单链表*/{?Node *s,*r;?char c;??? int flag=1;??r=L;?while(flag)?{??c=getchar();??if(c!=#)/*当输入#时建表结束*/??{???s=(Node *)malloc(sizeof(Node));???s-data=c;???r-next=s;???r=s;????}??else??{???flag=0;???r-next=NULL;??}?}}Node *Get(LinkList L,int i)//按序号查找第i个节点,若成功返回存储位置//返回指针值的函数{?int j;?Node *p;?if(i=0) return NULL;?p=L;?j=0;?while((p-next!=NULL)(ji))?{??p=p-next;??j++;?}?if(i==j)return p;?else return NULL;}Node *Locate(LinkList L,ElemType key)//按值查找线性表{?Node *p;?p=L-next;?while(p!=NULL)??if(p-data!=key)???p=p-next;??else???break;??return p;}int ListLength(LinkList L)//求单链表的长度{?Node *p;int j=0;?p=L-next;??while(p!=NULL)?{??p=p-next;??j++;?}?return j;}int InsList(LinkList L,int i,ElemType e)//在线性表的第i个位置插入值为e的新节点{?Node *pre,*s;?int k;?if(i1) return ERROR;?pre=L;?k=0;?while(pre!=NULLki-1)?{??pre=pre-next;??k++;?}?if(!pre)?{??printf(插入位置不合理!);??return ERROR;?}?s=(Node *)malloc(sizeof(Node));?s-data=e;?s-next=pre-next;?pre-next=s;?return OK;}int DelList(LinkList L,int i,ElemType e)//删除第i个节点{?Node *pre,*r;?int k;?pre=L;?k=0;?while(pre-next!=NULLki-1)?{??pre=pre-next;??k++;?}?if(!(pre-next))?{??printf(删除节点i的值不合理!);??return ERROR;?}?r=pre-next;?pre-next=pre-next-next;?e=r-data;?free(r);?return OK;}void main(){?LinkList l;?Node *p,*q,*r;?int x,len,w,tag,ji,tag1;?char m,g,e;?initlinklist(l);?printf(建立单链表,请输入链表数据,以#结束!\n);??? Create(l);?p=l-next;?printf(刚才建立的单链表为:\n);?while(p!=NULL)?{??printf(%c ,p-data);??p=p-next;?}?printf(\n按节点查找? 请输入要查找的节点i的值:\n);?scanf(%d,x);?q=Get(l,x);?if(q!=NULL)??printf(第%d个节点的值是%c,x,q-data);?else ??printf(没有找到该节点!);???

您可能关注的文档

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档