1、链表实验报告总结链表实验报告总结篇一:顺序表,链表总结实验报告实验报告实验目的:学生管理系统(顺序表)实验要求:1.建表2.求表长3.插入4.查找5.删除6.列表7.退出源程序:#include#include#include#define MaxSize 1000typedef structchar xh40;char xm40;int cj;DataType; /学生的结构typedef struct DataType dataMaxSize; /定义表的数据类型int length; /数据元素分别放置在data0到datalength-1当中 SqList; /表的结构 void li
2、ebiao(SqList *L)/ int k,n;char q;printf(请输入,输入学生的个数:n);fflush(stdin);scanf(%d,&n);for(k=0;k printf(请输入学生学号n); scanf(%s,L-datak.xh);printf(请输入学生名字n);scanf(%s,L-datak.xm);printf(请输入学生成绩n);scanf(%d,&L-datak.cj); 建立表格L-length=n;void qb(SqList *L) /全部输出int k,w;for(k=0;klength;k+)w=k+1;printf(第%d位学生:,w);p
3、rintf(%s %s%dn,L-datak.xh,L-datak.xm,L-datak.cj); int cr(SqList *L,DataType *xs,int i) /插入信息 int j;if(L-length=MaxSize)printf(没有!);return 0;else if(iL-length)printf(程序溢出,不符合);return 0;elsefor(j=L-length-1;j=i;j-)strcpy(L-dataj+1.xh,L-dataj.xh); strcpy(L-dataj+1.xm,L-dataj.xm); L-dataj+1.cj=L-dataj.c
4、j;strcpy(L-datai.xh,xs-xh);strcpy(L-datai.xm,xs-xm);L-datai.cj=xs-cj;L-length=L-length+1;return 0; int cz(SqList *L) /查找信息 char xh40;char xm40;int cj;int i=0,u;printf( 1、按学号查询n); printf( 1、按姓名查询n); printf( 1、按成绩查询n); printf(请选择:);fflush(stdin);scanf(%d,&u);if (u=1)printf(请输入要查找学生的学号:);scanf(%s,xh);f
5、or(i=0;ilength;i+)篇二:单链表的实验报告辽宁工程技术大学上机实验报告篇三:单链表实验报告实验一 线性表基本操作的编程实现-线性表在链表存储下的主要操作实现班级:T523-1 姓名:王娟学号:33完成日期: 地点:5502学时:2学时一、需求分析 【实验目的】 通过本次实验,对课堂上线性表的知识进行巩固,进一步熟悉线性表的链接存储及相应的基本操作;并熟练掌握VC+ 6.0操作平台,学会调试程序,以及编写电子实验报告【实验要求】编写线性表的基本操作,有构造线性表,线性表的遍历,插入,删除,查找,求表长等基本功能,在此基础上能够加入DOS下的图形界面以及学会文件的操作等功能,为以后
6、的学习打下基础。【实验任务】(1).线性表基本操作的编程实现,掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。(2).用菜单管理,把线性表的顺序存储和链表存储的数据插入、删除运算进行程序实现。建议实现键盘数据输入实现改实验的通用性。为了体现功能的正常性,至少要编制遍历数据的函数.(3).注意事项:开发语言使用C+,尽量使用面向对象的思想和实现方法,可以改编成应用软件.【实验类型】验证型实验 二
7、、概要设计 需要实现线性表的以下功能:1、创建单链表2、删除链表中的某个结点3、输出单链表(遍历)4、释放结点所占空间5、查找第i个结点6、插入一个结点7、求链表的长度二、详细设计(1).数据结构线性表的线性结构觉决定了它的性质:数据元素之间是一种线性关系,数据元素一个接一个的排列,除了最后一个数据,其他的数据面临的下一个数据有且仅有一个。(2) .存储结构单链表采用一个结点存放一个数据元素,每个结点除了包括存放数据元素值的数据域(data)外,还包括指向下一个元素的存储位置的指针域(next)。最后一个结点的指针域为空。(3). 算法分析(函数功能的实现)a.创建链表创建链表的过程实际相当于
8、申请了一个一个的节点,将这些节点用一种关系连接起来。本程序没有空置的头结点。创建的过程中分别对头结点和非头结点进行不同的处理。(1).创建的过程nodetype *create()/建立单链表,由用户输入各节data域之值 elemtype d;nodetype *h=NULL,*s,*t;int i=1;coutwhile(1)coutcind;if (d=0) break; /以0表示输入结束if(i=1) /建立第一个节点h=new nodetype;h-data=d;h-next=NULL;t=h;else /建立其于节点s=new nodetype;s-data=d;s-next=N
9、ULL;t-next=s;t=s; /t始终指向生成的单链表最后一结点i+;return (h);b插入函数链表的插入分为往前插和往后插两种操作,此程序采用了往后插的方法,同时实现了从键盘输入数据的功能。也考虑了特殊情况即链表的溢出,对此首先进行了判断,保证了程序的安全性和健壮性。在此过程中调用了另一函数find();nodetype *ins(nodetype *h,int i,elemtype x) /在第i个节点后插入data域为x的节点nodetype *p,*s;s=new nodetype;/建结点ss-data=x;s-next=NULL;if(i=0)/插入到第一个位置s-ne
10、xt=h;h=s;elsep=find(h,i); /查找第i个节点,并由p指向该节点 if (p!=NULL)s-next=p-next;p-next=s;elsecoutreturn h;c.删除函数对于删除,和插入一样也要通过改链来实现,不过在单链表中,当一个指针指向某一个节点时,是不能删除它的,因为地址存放在上一个节点的链域中,所以必须启动一个尾随指针。同插入一样,是删除某个结点后的数,也调用了find();函数,由于插入和删除类似所以不附上原程序。d.输出函数(遍历)采用while循环输出单链表的内容,用到了p1=p1-next以及输出函数coutif (p=NULL)coutelsewhile(p!=NULL) /链表不为空时输出coutdatap=p-next;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1