文档介绍:该【数据结构(C语言版)-实验报告 】是由【幸福人生】上传分享,文档一共【33】页,该文档可以免费在线阅读,需要了解更多关于【数据结构(C语言版)-实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。数据结构(C语言版)-实验报告
数据结构(C语言版)实验报告
专业:计算机科学与技术、软件工程
学号:____201240703061___________________
班级:_________软件二班______________
姓名:________朱海霞______________
指导教师:___刘遵仁________________
青岛大学信息工程学院
2013年10月
#include<>
#defineOK1
#defineERROR0
#defineOVERFLOW-2
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
typedefstruct{
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||i>+1)returnERROR;
if(==){
int*newbase;
newbase=(int*)realloc(,(+LISTINCREMENT)*sizeof(int));
if(!newbase)return-1;
=newbase;
+=LISTINCREMENT;
}
int*p,*q;
q=&([i-1]);
for(p=&([-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++;
returnOK;
}
intListDelete_Sq(Sqlist&L,inti,inte){
int*p,*q;
if(i<1||i>)returnERROR;
p=&([i-1]);
e=*p;
q=+-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--;
returnOK;
}
intmain(){
SqlistL;
InitList_Sq(L);//初始化
inti,a[]={3,-5,6,8,2,-5,4,7,-9};
for(i=1;i<10;i++)
ListInsert_Sq(L,i,a[i-1]);
for(i=0;i<9;i++)
printf("%d",[i]);
printf("\n");//插入9个数
ListInsert_Sq(L,3,24);
for(i=0;i<10;i++)
printf("%d",[i]);
printf("\n");//插入一个数
inte;
ListDelete_Sq(L,2,e);
for(i=0;i<9;i++)
printf("%d",[i]);//删除一个数
printf("\n");
return0;
}
实验结果:
3,-5,6,8,2,-5,4,7,-9
3,-5,24,6,8,2,-5,4,7,-9
3,24,6,8,2,-5,4,7,-9
心得体会:
顺序存储结构是一种随机存取结构,存取任何元素的时间是一个常数,速度快;结构简单,逻辑上相邻的元素在物理上也相邻;不使用指针,节省存储空间;但是插入和删除元素需要移动大量元素,消耗大量时间;需要一个连续的存储空间;插入元素可能发生溢出;自由区中的存储空间不能被其他数据共享
实验2
实验题目:单链表的插入和删除
实验目的:
了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。
实验要求:
建立一个数据域定义为字符类型的单链表,在链表中不允许有重复的字符;根据输入的字符,先找到相应的结点,后删除之。
实验主要步骤:
分析、理解给出的示例程序。
调试程序,并设计输入数据(如:A,C,E,F,H,J,Q,M),测试程序的如下功能:不允许重复字符的插入;根据输入的字符,找到相应的结点并删除。
修改程序:
增加插入结点的功能。
建立链表的方法有“前插”、“后插”法。
程序代码:
#include<>
#include<>
#defineNULL0
#defineOK1
#defineERROR0
typedefstructLNode{
intdata;
structLNode*next;
}LNode,*LinkList;
intInitList_L(LinkList&L){
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
returnOK;
}
intListInsert_L(LinkList&L,inti,inte){
LinkListp,s;
intj;
p=L;j=0;
while(p&&j<i-1){
p=p->next;++j;
}
if(!p||j>i-1)
returnERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
returnOK;
}
intListDelete_L(LinkList&L,inti,int&e){