文档介绍:c数据结构实验报告数据结构(C语言版)实验报告;专业:计算机科学与技术、软件工程;学号:XX40703061;班级:软件二班;姓名:朱海霞;指导教师:―刘遵仁;青岛大学信息工程学院;XX年10月;实验1;实验题目:顺序存储结构线性表的插入和删除;实验目数据结构(C语言版)实验报告专业:计算机科学与技术、软件工程学号:XX40703061班级:软件二班姓名:朱海霞指导教师:—刘遵仁青岛大学信息工程学院XX年10月实验1实验题目:顺序存储结构线性表的插入和删除实验目的:了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。实验主要步骤:1、 分析、理解给出的示例程序。2、调试程序,并设计输入一组数据 (3,-5,6,8,2,-5,4,7,-9),测试程序的如下功能:根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。程序代码:#include#include#defineOK1#defineERROR0#defineOVERFLOW-2#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefstruct{int*elem;intlength;intlistsize;}Sqlist;intInitList_Sq(Sqlist&L){=(int*)malloc(LIST_INIT_SIZE*sizeof(int));if(!)return-1;=0;=LIST_INIT_SIZE;returnOK;}intListInsert_Sq(Sqlist&L,inti,inte){if(i+1)returnERROR;if(==){int*newbase;newbase=(int*)realloc(,(+LISTINCREMENT)*sizeof(int));if(!newbase)return-1;=newbase;+=LISTINCREMENT;}int*p,*q;q=&();for(p=&();p>=q;--p)*(p+1)=*p;*q=e;++;returnOK;}intListDelete_Sq(Sqlist&L,inti,inte)(int*p,*q;if(i)returnERROR;P=&();e=*p;q=+;for(++p;p*(p-1)=*p;--;returnOK;}intmain()(SqlistL;InitList_Sq(L);//初始化inti,a={3,-5,6,8,2,-5,4,7,-9};for(i=1;iListInsert_Sq(L,i,a);for(i=0;i printf("%d”,);printf("");// 插入9个数ListInsert_Sq(L,3,24);for(i=0;i printf("%d",);printf("");// 插入一个数inte;ListDelete_Sq(L,2,e);for(i=0;iprintf("%d",);// 删除一个数printf("");return0;}实验结果:-5,6,8,2,-5,4,7,-93,-5,24,6,8,2 ,-5,4,7,-93,24,6,8,2,-5,4,7,-9心得体会:顺序存储结构是一种随机存取结构,存取任何元素的时间是一个常数,速度快;结构简单,逻辑上相邻的元素在物理上也相邻;不使用指针,节省存储空间;但是插入和删除元素需要移动大虽元素,消耗大虽时间 ;需要一个连续的存储空间;插入元素可能发生溢出 ;自由区中的存储空间不能被其他数据共享实验2实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为字符类型的单链表,在链表中不允许有重复的字符;根据输入的字符,先找到相应的结点,后删除之。实验主要步骤:3、 分析、理解给出的示例程序。4、调试程序,并设计输入数据(如:A,C,E,F,H,J,Q,M),测试程序的如下功能:不允许重复字符的插入 ;根据输入的字符,找到相应的结点并删除。5、 修改程序:增加插入结点的功能。建立链表的方法有“前插”、“后插”法。程序代码:#include#include#defineNULL0#defineOK1#defineERROR0typedefstructLNode{intdata;structLNode*next;}LNode,*LinkList;intInitList_L(LinkList&L){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;r