文档介绍:数据结构(C语言版) 实验报告
专业:计算机科学与技术
学号:_______________________
班级:_______________________
姓名:_______________________
指导教师:___________________
青岛大学信息工程学院
2014年10月
实验1
实验题目:顺序存储结构线性表的插入和删除
实验目的:
了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。
实验要求:
建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。
实验主要步骤:
分析、理解给出的示例程序。
调试程序,并设计输入一组数据(3,-5,6,8,2,-5,4,7,-9),测试程序的如下功能:根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。
程序代码:
#include<>
#include<>
#include<>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
typedef int status;
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}sqlist;
status initlist_sq(sqlist &L)
{
=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!)exit(OVERFLOW);
=0;
=LIST_INIT_SIZE;
return OK;
}//
status getelem_sq(sqlist &L)
{
int i=0,e,d;
printf("please input how many number you want to init\n");
scanf("%d",&d);
printf("please input the number you want to init\n");
while(1)
{
scanf("%d",&e);
[i]=e;
++;
i++;
if(i>=d)break;
}
return OK;
}
status listdelet_sq(sqlist &L)
{
int i=0,e;
int *p;
int *q;
printf("please input the number you want to delete\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;
}
}
return OK;
}
main()
{
int i=0;
sqlist L;
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
实验题目:栈操作设计和实现
实