资源描述:
《单链表操作实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、线性表一、实验目的1.了解线性表的逻辑结构特征,以及这种特性在计算机内的两种存储结构。2.掌握线性表的顺序存储结构的定义及其C语言实现。3.掌握线性表的链式村粗结构——单链表的定义及其C语言实现。4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。5.掌握线性表在链式存储结构——单链表中的各种基本操作。二、实验要求1.认真阅读和掌握本实验的程序。2.上机运行本程序。3.保存和打印出程序的运行结果,并结合程序进行分析。4.按照对顺序表和单链表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果三
2、、实验内容请编写C程序,利用链式存储方式来实现线性表的创建、插入、删除和查找等操作。具体地说,就是要根据键盘输入的数据建立一个单链表,并输出该单链表;然后根据屏幕菜单的选择,可以进行数据的插入或删除,并在插入或删除数据后,再输出单链表;然后在屏幕菜单中选择0,即可结束程序的运行。四、解题思路本实验要求分别写出在带头结点的单链表中第i(从1开始计数)个位置之后插入元素、创建带头结点的单链表中删除第i个位置的元素、顺序输出单链表的内容等的算法。五、程序清单#include#include
3、#includetypedefintElemType;typedefstructLNode{ElemTypedata;structLNode*next;}LNode;LNode*L;LNode*creat_L();voidout_L(LNode*L);voidinsert_L(LNode*L,inti,ElemTypee);ElemTypedelete_L(LNode*L,inti);intlocat_L(LNode*L,ElemTypee);voidmain(){
4、inti,k,loc;ElemTypee,x;charch;do{printf("");printf("1.建立单链表");printf("2.插入元素");printf("3.删除元素");printf("4.查找元素");printf("0.结束程序运行");printf("======================================");printf("请输入您的选择(1,2,3,4,0)");scanf("%d",&k);switch(k){ca
5、se1:{L=creat_L();out_L(L);}break;case2:{printf("请输入插入位置:");scanf("%d",&i);printf("请输入要插入元素的值:");scanf("%d",&e);insert_L(L,i,e);out_L(L);}break;case3:{printf("请输入要删除元素的位置:");scanf("%d",&i);x=delete_L(L,i);out_L(L);if(x!=-1){printf("删除的元素为:%d",x
6、);printf("删除%d后的单链表为:",x);out_L(L);}elseprintf("要删除的元素不存在!");}break;case4:{printf("请输入要查找的元素值:");scanf("%d",&e);loc=locat_L(L,e);if(loc==-1)printf("为找到指定元素!");elseprintf("已找到,元素位置是%d",loc);}break;}printf("----------------");}while(k>=1&&k<5)
7、;printf("按回车键,返回...");ch=getchar();}LNode*creat_L(){LNode*h,*p,*s;ElemTypex;h=(LNode*)malloc(sizeof(LNode));h->next=NULL;p=h;printf("请输入第一个数据元素:");scanf("%d",&x);while(x!=-999){s=(LNode*)malloc(sizeof(LNode));s->data=x;s->next=NULL;p->next=s;p=s;p
8、rintf("请输入下一个数据:(输入-999表示结束。)");scanf("%d",&x);}return(h);}voidout_L(LNode*L){LNode*p;p=L->next;printf("");while(p!=NULL){printf("%5d",p->data);p=p->next;};}voidinsert_L(LNode*L,inti,ElemTypee){LNode*s,*p;intj;p=L;j=0;while(p