还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
试验链表基本操作试验2
一、试验目的
1.定义单链表的结点类型
2.熟悉对单链表的某些基本操作和详细的函数定义
3.通过单链表的定义掌握线性表的链式存储构造的特点
二、试验内容与规定该程序日勺功能是实现单链表的定义和重要操作如单链表建立、输出、插入、删除、查找等操作该程序包括单链表构造类型以及对单链表操作的详细时函数定义和主函数程序中的单链表带头结点结点为构造类型,结点值为整型规定同学们可参照指导书试验2程序、教材算法及其他资料编程实现单链表有关操作必须包括单链表创立、输出、插入、删除操作,其他操作根据个人状况增减
三、算法分析与设计L创立单链表创立链表函数LinkedList LinkedListCreat调用初始化链表函数LinkedList L=LinkedListInit,p,r;指向头结点r=L;rvo id L i nkedL i st InsertL i nkedL i st L,i nti,EIemType x{L i nkedL i st p,s;int j;j=1;P=L;whi Iepjip=p-next;j++;}if p=NULL||jipr i ntf插入位置不对日勺\n;eIse{s=LNode*ma IIoc si zeofLNode;s-data=x;s-next=p-next;p-next=s;pr intf%d已插入到链表中\n,x;}vo id LinkedListDelL i nkedL i st L,i nti{L i nkedL i st p,q;int j;j=1;P=Lwhile p-nextji{p=p-next;j++;}i fp-next==NULLpr intf删除位置不对的\n;e Ise{q=p-next;p-next=q-next;free q;printf第%d个元素已从链表中删除\n”,i;}}L i nkedL i st LinkedListCreat0{L i nkedL i st L=L i nkedL i st I n i t,p,r;EIemType x;r二L;pr irrtf请依次输入链表中日勺元素,输入-1结束\n;scanf%d,x;wh iI ex!=f Iag{p=L i nkedLi stma I Iocs i zeofLNode;p-data=x;r-next=p;scanf%dn,x;r-next=NULL;return L;}i ntscan0{int d;printf请选择要进行日勺操作\n;pr i ntf----------------------------------------------------------------------------------------------\nH;prin
1.初始化
2.清空
3.求链表长度
4.检查链表与否为空\n;pr i ntf”--------------------------------------------------------------------------------------------\rT;printf
5.遍历链表
6.从链表中查找元素\n;pr intf---------------------------------------------------------------\n;printf
7.从链表中查找与给定元素值相似日勺元素在次序表中的位置\n;pr i ntf--------------------------------------------------------------\n;printf
8.向链表中插入元素
3.单链表的删除:p-next=p-next-next;
四、运行成果
1.单链表初始化请选择要进行的操作初始化.清空求链表长度.检查链表是否为空.遍历链表.从链表中查找元素
1.
23.456反链表中查找与给是元素值相同的元素在顺谆表中的位置「而箍蓑市矗入元翥.又踵触删诬元聚
7.9询获殍蓑其他键退出io i蛤X-
42.创立单链表萼余次输犬链表中的元素,输入T结束P80435-6-
13.求链表长度触表长度为
74.检查链表与否为空wA=4铺表非空
5.遍历链表除表中的元素为:980435-
66.从链表中查找元素健入6毒植入待查询元素在链表中的位置工雅美第个亓素畸翱19_______________WA=6请输入待查询元素在链表中的位置2罪蓑第个元素的值为黑输人待查询元素在链表中的位置;置窗!位普不正确
2887.从链表中查找与给定元素值相似日勺元素在次序表中的位置脸施人待查询元素的值”朝蓑中凌有值为的元素7SA R
8.向链表中插入元素WV8请输入插入元素的位置和值〈中间以空格或回车分隔〉:310己插入到链表中10插入元素之后的链表域表中的元素为W8100435-
69.从链表中删除元素输入:9情输入待删除元素的位置第个元素忒拣表中蒯除66a删除位置为6的元素(是3)除表中的元素为:9810045-
610.清空单链表牌表己经清空链表为空pA2
五、试验体会通过这次单链表基本操作试验,自己的编程能力有了深入的提高,认识到自己此前在思索一种问题上思绪不够开阔,不能灵活的体现出自己日勺想法,虽然在打完源代码之后出现了某些错误,不过通过认真查找、修改,最终将错误一一修正,重要是在写算法分析的时候出现了障碍,通过从网上查找资料,自己也对程序做了仔细日勺分析,对单链表创立、插入、删除算法画了详细的N-S流程图C语言版原代码#i ncIudestdi o.h#i ncIudestdIi b.h/*定义ElemType为int类型*/typedef int EIemType;def ine TRUE1def ine FALSE0def ine NULL0def ine fIag-1/*单链表日勺结点类型*/typedef struct LNodeEIemType data;structLNode*next;}LNode,*L inkedL ist;/*初始化单链表*/L inkedL ist L inkedL istInit{Li nkedList L;L=L inkedL istmaIIocsizeofLNode;L-next=NULL;return L;/*清空单链表*/vo id L inkedL istCIearL inkedL ist L{L-next=NULL;printf链表已经清空\n;}/*检查单链表与否为空*/intL inkedL istEmpty L inkedL ist L{if L-next二二NULL returnTRUE;eIse returnFALSE;/*遍历单链表*/void Li nkedLi stTraverseLinkedListL{L inkedL ist p;p=L-next;if p二二NULL printf单链表为空表\n;e Isepr intf链表中日勺元素为\n;whi lep!=NULL{printf%d,p-data;p=p-next;}printf n\n;1intLinkedL istLength LinkedListL{LinkedList p;int j;p=L-next;j=0;whi lep!=NULL{j++;P=p-next;}return j;}LinkedListLinkedListGetLinkedListL,i nti{LinkedList p;intj;p=L-next;j=1;whi lep!=NULLji{p=p-next;j++;}ifj二二i returnp;eIse returnNULL;intLinkedListLocate LinkedListL,EIemType x{LinkedList p;intj;p=L-next;j=1;wh iIep!=NULLp-data!=x{p=p-next;j++;}i fp returnj;eIse return0;。
个人认证
优秀文档
获得点赞 0