c语言数据结构双向链表.docx

上传人:太** 文档编号:35613664 上传时间:2022-08-22 格式:DOCX 页数:6 大小:13.66KB
返回 下载 相关 举报
c语言数据结构双向链表.docx_第1页
第1页 / 共6页
c语言数据结构双向链表.docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《c语言数据结构双向链表.docx》由会员分享,可在线阅读,更多相关《c语言数据结构双向链表.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、pedef char ElemType;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

3、(h);q = h;printf(输入个元素: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 =

4、NULL);DuLNode *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-nex

5、t)如果插入的不是尾节点p-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;) e

6、lse q = p-next;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-ne

7、xt) 遍历链表,记录节点数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

8、) 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( &L ,4);删除第四个节点的元素DisplayList(&L);DestroyList(&L);销毁链表if(ListEmpty(&L) ( printf(链表为空!n“); else (printfC链表不为空!n“);return OK;)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁