2022年数据结构实验报告 3.pdf
《2022年数据结构实验报告 3.pdf》由会员分享,可在线阅读,更多相关《2022年数据结构实验报告 3.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 .1/15 数据结构(C 语言版)实验报告专业:计算机科学与技术、软件工程学号:_201240703061_ 班级:_软件二班 _ 姓名:_朱海霞 _ 指导教师:_刘遵仁_ 青岛大学信息工程学院2013 年 10 月名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 15 页 -.2/15 实验 1实验题目:顺序存储结构线性表的插入和删除实验目的:了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。实验主要步骤:1、分析、理解给出的
2、示例程序。2、调试程序,并设计输入一组数据(3,-5,6,8,2,-5,4,7,-9),测试程序的如下功能:根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。程序代码:#include#include#define OK 1#define ERROR 0#define OVERFLOW-2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10 typedef struct int*elem;int length;int listsize;Sqlist;int InitList_Sq(Sqlist&L)L.elem=(int*)mallo
3、c(LIST_INIT_SIZE*sizeof(int);if(!L.elem)return-1;L.length=0;L.listsize=LIST_INIT_SIZE;return OK;int ListInsert_Sq(Sqlist&L,int i,int e)if(iL.length+1)return ERROR;if(L.length=L.listsize)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 15 页 -.3/15 int*newbase;newbase=(int*)realloc(L.elem,(L.listsize+LISTINCREMENT)*siz
4、eof(int);if(!newbase)return-1;L.elem=newbase;L.listsize+=LISTINCREMENT;int*p,*q;q=&(L.elemi-1);for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;*q=e;+L.length;return OK;int ListDelete_Sq(Sqlist&L,int i,int e)int*p,*q;if(iL.length)return ERROR;p=&(L.elemi-1);e=*p;q=L.elem+L.length-1;for(+p;p=q;+p)*(p-1)=*p
5、;-L.length;return OK;int main()Sqlist L;InitList_Sq(L);/初始化int i,a=3,-5,6,8,2,-5,4,7,-9;for(i=1;i10;i+)ListInsert_Sq(L,i,ai-1);for(i=0;i9;i+)printf(%d,L.elemi);printf(n);/插入 9个数ListInsert_Sq(L,3,24);for(i=0;i10;i+)printf(%d,L.elemi);printf(n);/插入一个数int e;ListDelete_Sq(L,2,e);for(i=0;i9;i+)printf(%d,
6、L.elemi);/删除一个数printf(n);return 0;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 15 页 -.4/15 实验结果: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实验题目:单链表
7、的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为字符类型的单链表,在链表中不允许有重复的字符;根据输入的字符,先找到相应的结点,后删除之。实验主要步骤:3、分析、理解给出的示例程序。4、调试程序,并设计输入数据(如:A,C,E,F,H,J,Q,M),测试程序的如下功能:不允许重复字符的插入;根据输入的字符,找到相应的结点并删除。5、修改程序:(1)增加插入结点的功能。(2)建立链表的方法有“前插”、“后插”法。程序代码:#include#include#define NULL 0#define OK 1#d
8、efine ERROR 0 typedef struct LNode int data;struct LNode*next;LNode,*LinkList;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 15 页 -.5/15 int InitList_L(LinkList&L)L=(LinkList)malloc(sizeof(LNode);L-next=NULL;return OK;int ListInsert_L(LinkList&L,int i,int e)LinkList p,s;int j;p=L;j=0;while(p&jnext;+j;if(!p|ji-1)ret
9、urn ERROR;s=(LinkList)malloc(sizeof(LNode);s-data=e;s-next=p-next;p-next=s;return OK;int ListDelete_L(LinkList&L,int i,int&e)LinkList p,q;int j;p=L;j=0;while(p-next&jnext;+j;if(!(p-next)|jnext;p-next=q-next;e=q-data;free(q);return OK;int main()LinkList L,p;char a8=A,C,E,F,H,J,Q,U;int i,j;InitList_L(
10、L);for(i=1,j=0;i=8,jnext;while(p!=NULL)printf(%ct,p-data);p=p-next;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 15 页 -.6/15/插入八个字符printf(n);i=2;int e;ListInsert_L(L,i,B);p=L-next;while(p!=NULL)printf(%ct,p-data);p=p-next;/插入一个字符printf(n);i=3;ListDelete_L(L,i,e);p=L-next;while(p!=NULL)printf(%ct,p-data);p=p-next;p
11、rintf(n);return 0;实验结果:A C E F H J Q U A B C E F H J Q U A B E F H J Q U 心得体会:单链表是通过扫描指针P 进行单链表的操作;头指针唯一标识点链表的存在;插入和删除元素快捷,方便。实验 3实验题目:栈操作设计和实现实验目的:1、掌握栈的顺序存储结构和链式存储结构,以便在实际中灵活应用。2、掌握栈的特点,即后进先出和先进先出的原则。3、掌握栈的基本运算,如:入栈与出栈等运算在顺序存储结构和链式存储结构上的实现。实验要求:回文判断:对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如名师资料总结-精品资料欢迎下载
12、-名师精心整理-第 6 页,共 15 页 -.7/15“abba”是回文,而“abab”不是回文。实验主要步骤(1)数据从键盘读入;(2)输出要判断的字符串;(3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。程序代码:#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW-2#define N 100#define STACK_INIT_SIZE 100#define STACKINCREMENT 10 typedef struc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构实验报告 2022 数据结构 实验 报告
限制150内