欢迎来到天天文库
浏览记录
ID:34761418
大小:74.63 KB
页数:4页
时间:2019-03-10
《实验二:线性表的链式表示和实现j》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二:线性表的链式表示和实现一实验目的:1.掌握线性表的链式存储结构的表示与实现,掌握线对线性链表进行创建、插入、删除和检索等操作的算法。2.掌握算法的设计与分析过程。3.进一步熟悉VC++开发环境,熟悉完成一个应用程序的设计过程,掌握有关编辑、调试和整合程序的方法和技巧。二实验要求:1.采用教材中c语言描述的单链表存储结构,模块化设计过程,设计高效的算法完成各种操作任务,针对实际数据实现各种操作。2.完成程序编写,调试成功后,书写实验报告。3.实验报告手写,写在实验报告纸上:内容要求:l实验目的l实验任
2、务l主要程序功能l主要功能代码(重要的)+程序解释l小结三实验任务(参见书上第36页例2.4):1.创建有n(n为正整数)数据元素的单链表,数据从键盘输入。2.查找第i个结点,找到返回其值,否则返回0;3.对已经创建的单链表分别进行插入结点操作,在第i个元素之前插入1个结点。4.删除结点,将第i个结点的元素删除。5.将单链表进行就地逆转(选做)。6.将链表按值的奇偶数分解成两个链表(选做)。要求:创建单链表后,其他操作可以是任意选择进行的。(考虑设计菜单调用各功能模块)四设计指导:1.结点的定义typede
3、fintElemType;//定义ElemType为int类型typedefstructLnode//单链表的结点类型{ElemTypedata;structLnode*next;}Lnode,*LinkList;//定义头指针2.4将复杂的问题分解成若干个相对容易的小问题,并设计好解决每个小问题的函数的函数名、入口参数及其返回值;设计出各个函数的程序框架及完整的主函数程序。(注:每个功能一个函数)如://单链表初始化LinkListLinkListInit(){Lnode*L;L=(LinkList)ma
4、lloc(sizeof(LNode));if(L==NULL){printf("内存空间分配失败!");exit(0);}L->next=NULL;return(L);}//单链表的建立一,头插法建立LinkListCreateList_H(){}//单链表的建立二,尾插法建立LinkListCreateList_T(){}//按序号查找intGetElem(LinkListL,inti){}//按指定元素的值查找intLocate_L(LinkListL,ElemTypee){}//单链表的插入Lin
5、kListLinkInsert_L(LinkListL,inti,ElemTypee){}4//单链表的删除LinkListLinkDelete_L(LinkListL,inti,ElemTypee){}//输出链表数据voidprint_list(LinkListL){LinkListp;p=L->next;while(p){printf("%6d",p->data);p=p->next;}printf("");}//带头结点的单链表的转置LinkListinvert(LinkListL){LinkL
6、istp,q;p=L->next;L->next=NULL;while(p){q=p->next;p->next=L->next;L->next=p;p=q;}returnL;}1.设计主函数和菜单调用各模块voidmain(){LinkListlist,start,p,list1;inti,k,m,n;ElemTypex;printf("*************************《线性表》**********************");printf("1创建链表2插入结点3查找");pr
7、intf("4删除结点5输出6转置链表");printf("7按奇偶值拆分链表0返回");4printf("*******************************************************");scanf("%d",&i);switch(i){case1:case2:case3://查找case4://删除case5:print_list(L);break;case6://逆转case7://分解case0:return;default:printf("重新选择!
8、n");}}4
此文档下载收益归作者所有