数据结构(C语言版) 实验报告 (2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构(C语言版) 实验报告
专业:计算机科学与技术
学号:_______________________
班级:_______________________
姓名:_______________________
指导教师:___________________
青岛大学信息工程学院
2014年10月
实验1
实验题目:顺序存储结构线性表的插入和删除
实验目的:
了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。
实验要求:
建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。
实验主要步骤:
1、分析、理解给出的示例程序。
2、调试程序,并设计输入一组数据(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)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}//initList.sq
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);
L.elem[i]=e;
L.length++;
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 { if(L.elem[i]==e) { p=&L.elem[i]; q=L.elem+L.length-1; for(++p;p<=q;++p) *(p-1)=*p; --L.length; break; } } return OK; } main() { int i=0; sqlist L; initlist_sq(L); getelem_sq(L); listdelet_sq(L); while(i { printf("%4d",L.elem[i]); i++; } } 实验结果: 心得体会: 经过这次了解和掌握了线性表的逻辑结构和顺序存储结构,明白了线性表的基本算法。 实验2 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符类型的单链表,在链表中不允许有重复的字符;根据输入的字符,先找到相应的结点,后删除之。 实验主要步骤: 3、分析、理解给出的示例程序。 4、调试程序,并设计输入数据(如:A,C,E,F,H,J,Q,M),测试程序的如下功能: 不允许重复字符的插入;根据输入的字符,找到相应的结点并删除。 5、修改程序: (1)增加插入结点的功能。 (2)建立链表的方法有“前插”、“后插”法。 程序代码: 实验结果: 心得体会: 实验3 实验题目:栈操作设计和实现 实验目的: 1、掌握栈的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈的特点,即后进先出和先进先出的原则。 3、掌握栈的基本运算,如:入栈与出栈等运算在顺序存储结构和链式存储结构上的实现。 实验要求: 回文判断:对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 实验主要步骤 (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。 程序代码: 实验结果: 心得体会: