文档介绍:数据结构(C语言版)实验报告专业:计算机科学与技术学号:_______________________班级:_______________________姓名:_______________________指导教师:___________________青岛大学信息工程学院2014年10月实验1实验题目:顺序存储结构线性表的插入和删除实验目的:了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。实验主要步骤:分析、理解给出的示例程序。调试程序,并设计输入一组数据(3,-5,6,8,2,-5,4,7,-9),测试程序的如下功能:根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。程序代码:#include<>#include<>#include<>#defineOK1#defineERROR0#defineOVERFLOW-2#defineLIST_INIT_SIZE100typedefintstatus;typedefintElemType;typedefstruct{ ElemType*elem; intlength; intlistsize;}sqlist;statusinitlist_sq(sqlist&L){ =(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!)exit(OVERFLOW); =0; =LIST_INIT_SIZE; returnOK;}//(sqlist&L){ inti=0,e,d; printf("pleaseinputhowmanynumberyouwanttoinit\n"); scanf("%d",&d); printf("pleaseinputthenumberyouwanttoinit\n"); while(1) { scanf("%d",&e); [i]=e; ++; i++; if(i>=d)break; } returnOK;}statuslistdelet_sq(sqlist&L){ inti=0,e; int*p; int*q; printf("pleaseinputthenumberyouwanttodelete\n"); scanf("%d",&e); for(i=0;i<;i++) { if([i]==e) { p=&[i]; q=+-1; for(++p;p<=q;++p)*(p-1)=*p; --; break; } } returnOK;}main(){ inti=0; sqlistL; initlist_sq(L);getelem_sq(L); listdelet_sq(L); while(i<) { printf("%4d",[i]); i++; }}实验结果:心得体会:经过这次了解和掌握了线性表的逻辑结构和顺序存储结构,明白了线性表的基本算法。实验2实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为字符类型的单链表,在链表中不允许有重复的字符;根据输入的字符,先找到相应的结点,后删除之。实验主要步骤:分析、理解给出的示例程序。调试程序,并设计输入数据(如:A,C,E,F,H,J,Q,M),测试程序的如下功能:不允许重复字符的插入;根据输入的字符,找到相应的结点并删除。修改程序:增加插入结点的功能。建立链表的方法有“前插”、“后插”法。程序代码:实验结果:心得体会:实验3实验题目:栈操作设计和实现实验目的:1、掌握栈的顺序存储结构和链式存储结构,以便在实际中灵活应用。2、掌握栈的特点,即后进先出和先进先出的原则。3、掌握栈的基本运算,如:入栈与出栈等运算在顺序存储结构和链式存储结构上的实现。实验要求:回文判断:对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。实验主要步骤(1)数据从键盘读入;(2)输出要判断的字符串;(3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。程序代码: