电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数据结构单链表实验报告

8页
  • 卖家[上传人]:pu****.1
  • 文档编号:482211775
  • 上传时间:2022-10-20
  • 文档格式:DOCX
  • 文档大小:32.63KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、洛阳理工学院实验报告系别 计算机系班级学号姓名课程名称数据结构实验日期11.7实验名称链表的基本操作成绩实验目的:熟悉掌握线性表链式存储结构,掌握与应用查找、插入、删除等基本操作 算法,训练和提高结构化程序设计能力及程序调试能力。实验条件:计算机一台,Visual C+6.0实验内容:1问题描述以单链表为存储结构实现以下基本操作:(1) 在第i个元素前插入一个新元素。(2) 杳找值为x的某个元素。若成功,给出x在表中的位置;不成功给出 提示信息。(3) 删除第i个元素,若成功,给出提示信息并显示被删元素的值;不成 功给出失败的提示信息。2. 数据结构类型定义typedef struet LinkNodeint Value;struet LinkNode * Next;Node ,*LinkList;3. 模块划分(1) 初始化链表:void InitList(LinkList * L);(2) 创建链表:尾插法:int CreateFromTail(LinkList L);(3) 在扌旨定位置插入兀素:int InsList(LinkList L,int i,int e);(4) 在扌

      2、旨定位置删除兀素:int DelList(LinkList L,int i,int *e);返回值说明:返回ERROR插入失败,返回OK插入成功;(5) 按位置查找链表兀素:int Get Lis t(LinkLis t L,in t i,in t * e);4. 详细设计void init_linklist(LinkList *l)/*对单链表进行初始化 */*l=(LinkList)malloc(sizeof(Node); /* 申请结点空间 */(*l)-next=NULL;/*置为空表 */void CreateFromHead(LinkListL)Node *s;char c;int flag=l;while(flag) /* flag 初值为1,当输入$时,置flag为0,建表结束 */c=ge tchar();if(c!=$)s=(Node*)malloc(sizeof(Node); /*建立新结点 s*/s-data二c;s-next二L-next;/* 将s结点插入表头*/L-next二s;elseflag=0;void CreateFromTail(LinkList

      3、 L)Node *r, *s;char c;int flag =1; /*设置一个标志,初值为1,当输入$时,flag为0,建 表结束*/r=L;/*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/while(flag)/* 循环输入表中元素值,将建立新结点s插入表尾*/c=ge tchar();if(c!=$)s=(Node *)malloc(sizeof(Node);sdata二c;rnext二s;r=s;elseflag=0;rnext二NULL;/*将最后一个结点的next链域置为空,表示链表的结束*/Node * Get (LinkList L, int i)/*在带头结点的单链表L中查找第i个结点,若找到(1W inext!二NULL)&(jnext; /* 扫描下一结点*/j+;/*已扫描结点计数器*/if(i = j)ret urn p; /* 找到了第i个结点*/elsere turn NULL; /*找不到,i W 0 或 in */Node *Locate( LinkList L,ElemType key)/*在带头结点的单链表L中查找其结点值等

      4、于key的结点,若找到则返回该结 点的位置p,否则返回NULL*/Node *p;p=L-nex t; /*从表中第一个结点开始*/while (p!二NULL)if (p-data!二key)p=p-next;elsebreak; /*找到结点值二key时退出循环*/return p;int InsLis t( LinkLis t L,i nt i,ElemType e)/*在带头结点的单链表L中第i个位置插入值为e的新结点s*/Node *pre,*s;int k;pre=L;k=0;/*从头开始,查找第i-1个结点*/while(pre!=NULL&knext;k二k+1;/*查找第i-1结点*/if(!pre) /*如当前位置pre为空表已找完还未数到第 i个,说明插入 位置不合理*/printf (“插入位置不合理!);return ERROR;s=(Node *)malloc(sizeof(Node); /* 申请一个新的结点 S */ sdata二e;/* 值e置入s的数据域*/snex t二pre-nex t;/*修改指针,完成插入操作*/prenext二s;retur

      5、n OK;int DelLis t( LinkLis t L,i nt i,ElemType *e)/*在带头结点的单链表L中删除第i个元素,并将删除的元素保存到变量 *e中 */Node *pre,*r;int k;pre=L;k=0;while(prenext!二NULL & knext;k=k+1;/*查找第i-1个结点*/if(!(prenex t)/*即while循环是因为pnext二NULL或inext;pre-nex t二pre-nex t-nex t;/*修改指针,删除结点 r*/*e = r-data;free(r); /*释放被删除的结点所占的内存空间*/ printf(成功删除结点!);return OK;int ListLength(LinkList L)/*求带头结点的单链表L的长度*/Node *p;int j;p=L-next;j=0;/*用来存放单链表的长度*/whil e(p!二NULL)p=p-next;j+;re turn j; /*j为求得的单链表长度*/5.测试数据及结果I MC:WindciwsSyste m32Dekn.igXCppl.exeMCCendX作SE燥人人.-r仞仞辟矗K茲齐A僉hL.J严緒治 trfi A 壬.:质A n 、古找A Hillis H- i LJ-. I.h 、f.、H-t, I i8裁盧 临孔品|+包 去?7襄痒 洁R叫r谅h诂3-中谿即占雪禹fr盲 -強-A. J.1; : Ml!ll 窃 JBlL-A- J L; J . IllJiJlvj. a . r 艮出2匚:、讥;irdcwsSy5tem32DebligCpp 1 .exe幘输人一串单字符数据,以兴结東!56789*宙前线性表为:5 6 7 8 9青选择您要的操作:1.插入2.查找3.删除0.退岀 醫辘入您要删除的数据的位置:7鋼表知5 6 7 8 9青选择您要的操作:1.插入2.查找3.删除0.退岀36 7 8 9青选择您要的操作:1.插入2.查找3.删除0.退岀实验总结:在调试的时候发现在头插法的时候出现错误,经过逻辑思考与调试,发现错 误所在,并且更改。

      《数据结构单链表实验报告》由会员pu****.1分享,可在线阅读,更多相关《数据结构单链表实验报告》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.