c语言数据结构双向链表_第1页
c语言数据结构双向链表_第2页
c语言数据结构双向链表_第3页
c语言数据结构双向链表_第4页
c语言数据结构双向链表_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、数据结构上机实验课后练习报告姓名:冯天明学号:班级:通信1412015年9月28日星期一实验三:编写一个程序,实现双链表的各种基本运算,并在此基础上设计一个主程序完成 以下功能。.初始化双链表L.依次采用尾插法或者头插法插入元素a,b,c,d,e.输出双链表L.输出双链表的长度.判断双链表是否为空.输出双链表的第四个元素.输出元素a的位置.在第三个元素位置插入元素f.输出双链表L.删除双链表L的第四个元素.输出双链表L.释放双链表#include#include#includedefine OK 0define ERROR -2dcfinc OVERFLOW-1typedef char Ele

2、mType;typedef struct DuLNode /定义双向链表ElemType data;DuLNode *prior;DuLNode *next; DuLNode,*DuLinkList;void InitDuLinkList( DuLinkList h) 创立一个空表h = new DuLNode;/(DuLinkList)malloc(sizeof(DuLNode); h-next = h-prior;void CreateDuLinkList(DuLinkList h,int n)/初始化链表DuLNode *p,*q;InitDuLinkList(h);q = h;prin

3、tf(输入个元素:nM,n);for(int i = 0;idata);fflush(stdin);q-next = p;p-prior = q;q = p;)q-next = NULL;int DestroyList(DuLinkList L) 销毁链表(DuLNode *p=L ;while(L-next)直到达最后一个节点p = L-next;L-next = p-next;free( p);)L-prior =NULL;return OK;int ListEmpty(DuLinkList L)return (L-ncxt = NULL& L-prior = NULL);DuLNode

4、*GetElem(DuLinkList h,int i) 获取对应节点的元素IDuLNode *p;p = h-next;intj = 1;while(p&jnext;+j;)if(j = i)return p;elsereturn NULL;int DuLinkListInser(DuLinkList h,int i,ElemType e)f IDuLNode *p,*s;p = GetElem(h,i-l);if(!p) return ERROR;s = (DuLinkList)malloc(sizeof(DuLNode);s-data = e;if(p-next)如果插入的不是尾节点p-

5、next-prior = s;s-next = p-next;s-prior = p;p-ncxt = s;else插入的是尾节点s-next = p-next;p-ncxt = s;s-prior = p;return OK;)int DeleListElem(DuLinkList L ,int i)(DuLNode *p,*q;p = GetElem(L,i-l);if(!p) return ERROR; 删除的元素不存在if(p-next)如果删除的不是最后一个节点(q = p-next;q-next-prior = p;p-next = q-next;) else q = p-next

6、;p-next = NULL;free( q);return OK;|int LocateElcm(DuLinkList L,ElcmTypc c)Iint loca = 0;DuLNode *p;p = L-next;if(P) (while( p != L) +loca;if(p & p-data = c) 元素匹配,返回节点 return loca;if(!p)return ERROR;p = p-next; return ERROR;int ListLength(DuLinkList L)DuLNode *p = L;int i = 0;while(p-next) 遍历链表,记录节点数

7、ip = p-next;+i;return i;void DisplayList(DuLinkList L)(DuLNode *p;p = L-next;if(ListEmpty(L)(printf(链表为空! n”);return ;fprintf(“链表的内容为while(p)遍历链表,输出节点data(printf(n%4cH,p-data);p = p-next;int main() DuLNode L,*temp;intloca;CreateDuLinkList(&L,5);初始化链表DisplayList(&L);/输出链表if(ListEmpty(&L) printf(链表为空!n“); elseiprintf(链表不为空!n”);temp = GetElem(&L,4);获取第四个位置的元素printf(链表第四个元素是:%cn,temp-data);loca = LocateElcmC&L/a1);printf(元素a在链表的第d个位置nJoca); 寻找a元素在链 表的某个节点printf(在第三个位置插入元素f:“);DuLinkListInser(&L,3,*f);插入元素f在第三个位置DisplayList(&L);DeleListElem(

温馨提示

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

评论

0/150

提交评论