双向链表(c实现)_第1页
双向链表(c实现)_第2页
双向链表(c实现)_第3页
双向链表(c实现)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

双向链表 代码部分 /*双向链表*/ #include typedef struct dbnode int num; char name9; char sex3; int age; int score; struct dbnode *prior; /*前指针*/ struct dbnode *next; /*后指针*/ Node,*LinkList; /*结点类型、头指针类型*/ LinkList CreateLinkList() /*创建结点*/ LinkList head; /*链表头指针*/ Node *New,*End; /*新指针、尾指针*/ int i,x; head=(LinkList)malloc(sizeof(Node);/*生成头结点*/ head-prior=head; /*头指针 prior 指向自己*/ head-next=head; /*头指针 next 指向自己*/ End=head; /*尾指针指向头指针*/ printf(“请输入链表的长度:n“); scanf(“%d“, for(i=1;inum,New-name,New-sex,/*输入结点信息 */ End-next=New; /*尾指针 next 指向新结点*/ New-prior=End; /*新结点 prior 指向尾结点 */ New-next=head; /*新结点 next 指向头结点*/ head-prior=New; /*头指针 prior 指向新结点*/ End=New; /*尾结点指向新结点*/ return(head); void OutLinkList(LinkList head) /*输出结点*/ Node *p; int i=1; p=head; p=p-next; printf(“-学生信息档案表-n“); while(p!=head) printf(“Num %d:%d,%s,%s,%d,%d.n“,i+,p-num,p-name,p-sex,p-age,p-score); p=p-next; LinkList GetLinkList(LinkList head,int i) /*读表元素*/ Node *p; p=head-next; int c=1; while(cnext; c+; if(c=i) /*找到第 i 个结点*/ return p; else return NULL; /*查找失败*/ void InsertLinkList(LinkList head,int i) /*插入结点*/ Node *End,*New,*x; if(i=1) End=head; else End=GetLinkList(head,i); if(End=NULL) printf(“找不到插入位置“); else New=(Node *)malloc(sizeof(Node); printf(“请输入学号、姓名、性别、年龄、成绩:n“); scanf(“%d%s%s%d%d“, New-prior=End; New-next=End-next; End-next-prior=New; End-next=New; void DeleteLinkList(LinkList head,int i) /*删除结点*/ Node *p; if(i=1) p=head; else p=GetLinkList(head,i); /*查找第 i 个结点位置*/ if(p!=NULL) p-prior-next=p-next; /*p 前驱结点的后链指向 p 的后继结点*/ p-next-prior=p-prior; /*p 后继结点的前链指向 p 的前驱结点*/ free(p); /*释放*p 的空间*/ else printf(“找不到删除位置n“); LinkList LocateLinkList(LinkList head,int i) /*查找结点*/ Node *p; p=head-next; int c=1; while(cnext; c+; if(c=i) /*找到第 i 个结点*/ printf(“Num %d:%d,%s,%s,%d,%d.n“,i+,p-num,p-name,p-sex,p-age,p-score); else return NULL; /*查找失败*/ main() LinkList head; int n; head=CreateLinkList(); OutLinkList(head); printf(“请输入插入的位置:n“); scanf(“%d“, InsertLinkList(head,n); OutLinkList(head); printf(“请输入删除位置:n“); scanf(“%d“, D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论