数据结构实验指导书(C语言版)-罗先文
数据结构实验指导书(C++)-栈、队列、串的操作
数据结构实验指导书(C++)-栈、队列、串的操作实验二栈、队列、串的操作实验类型:验证性实验要求:必修实验学时: 2学时一、实验目的:参照给定的栈类和队列类的程序样例,验证给出的栈和队列的常见算法,并结合线性表类实现有关串的操作。
二、实验要求:1、掌握栈、队列、串的特点。
掌握特殊线性表的常见算法。
2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。
三、实验内容:1. 堆栈类测试和应用问题。
要求:(1)设计一个主函数实现对顺序堆栈类和链式堆栈类代码进行测试。
测试方法为:依次把数据元素1,2,3,4,5入栈,然后出栈堆栈中的数据元素并在屏幕上显示。
(2)定义数据元素的数据类型为如下形式的结构体:typedef struct{ char taskname[10];//任务名int taskno; //任务号}DataType;设计一个包含5个数据元素的测试数据,并设计一个主函数实现依次把5个数据元素入栈,然后出栈堆栈中的数据元素并在屏幕上显示。
2. 队列类测试和应用问题。
要求:设计一个主函数对循环队列类和链式队列类代码进行测试.测试方法为:依次把数据元素1,2,3,4,5入队,然后出队中的数据元素并在屏幕上显示。
3.设计串采用顺序存储结构,编写函数实现两个串的比较Compare(S, T)。
要求比较结果有大于、等于和小于三种情况。
*4. 设计算法利用栈类实现把十进制整数转换为二至九进制之间的任一进制输出。
*5. 设计串采用静态数组存储结构,编写函数实现串的替换Replace(S, start, T, V),即要求在主串S中,从位置start开始查找是否存在子串T,若主串S中存在子串T,则用子串V替换子串T,且函数返回1;若主串S中不存在子串T,则函数返回0。
并要求设计主函数进行测试。
一个测试例子为:S=”I am a student”,T=”student”,V=”teacher “。
《数据结构》(C语言)实验报告
《数据结构》实验报告姓名:**学号:*********成绩:_____目录实验一,线性表的应用 (3)实验二,栈和队列的应用 (8)实验三,数组的应用 (13)实验四,树和二叉树的应用 (19)实验五,图的应用 (24)实验六,查找表的应用 (32)实验七,排序算法的应用 (44)实验一线性表的应用【实验目的】1.熟练掌握线性表的基本操作在顺序存储和链式存储上的实现;2.以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点;3.掌握线性表的动态分配顺序存储结构的定义和基本实现;4.通过对本章实验帮助学生加深对C语言的使用(特别是函数参数调用、指针类型的应用和链表的建立等各种基本操作)。
【实验内容】约瑟夫问题的实现:n只猴子要选猴王,所有猴子按1,2,…,n编号围坐一圈,从第1只开始按1,2,…,m报数,凡报到m号的猴子退出圈外,如此循环报数,直到圈内省剩下一只猴子时,这个猴子就是猴王。
编写一个程序实现上述过程,n和m由键盘输入。
【实验要求】1.要求用顺序表和链表分别实现约瑟夫问题;2.独立完成,严禁抄袭;3.上交的实验报告由如下部分组成:①实验名称②实验目的③实验内容(问题描述,算法描述,程序清单,测试结果,算法分析)。
实验结果:一,源程序:#include<stdio.h> #include<stdlib.h>#define Maxsize 80struct SeqList{int data[Maxsize];int len;};typedef struct SeqList SeqList;void InitList(SeqList *L){L=(SeqList *)malloc(sizeof(SeqList)); L->len=0;}void MadeList(SeqList *L){int i;int people;printf("请输入参选的总数:\n"); scanf("%d",&people);for (i=0;i<people;i++){L->data[i]=i+1;printf(" %d ",L->data[i]); }printf("\n");L->len=people;}void WentList(SeqList *L){int m,i,j;int k=0;printf("请输入出列数:\n"); scanf("%d",&m);for (i=L->len;i>0;i--){k=(k+m-1)%i;printf(" %d ",L->data[k]); for (j=k;j<i-1;j++){L->data[j]=L->data[j+1]; }L->len=L->len-1;}printf("\n");}void main(){SeqList *L;InitList(L);MadeList(L);WentList(L);}二,运行结果及截屏视图:实验二栈和列队的应用【实验目的】1.熟练掌握栈和列队的结构,以及这两种数据结构的特点;2.能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空时的判断条件和描述方法;3.熟练掌握链队列和循环列表的基本运算,特别注意队列满和队列空时的判断条件和描述方法。
数据结构c语言版实验教案
数据结构C语言版实验教案一、实验目的1. 理解数据结构的基本概念和原理。
2. 掌握C语言在数据结构中的应用和实现。
3. 培养动手实践能力和团队协作精神。
二、实验内容1. 线性表的实现与操作:顺序存储结构、链式存储结构。
2. 栈和队列的实现与操作。
3. 线性排序算法实现与分析。
4. 树与二叉树的实现与操作。
5. 图的实现与操作。
三、实验环境1. 编程语言:C语言。
2. 开发工具:Visual Studio、Code::Blocks等。
3. 操作系统:Windows、Linux或Mac OS。
四、实验步骤1. 实验准备:了解实验内容,阅读相关教材和资料,明确实验目标和任务。
2. 设计实验方案:根据实验内容,设计相应的数据结构和算法。
3. 编写实验代码:按照实验方案,用C语言编写代码。
4. 调试和测试:运行代码,检查功能是否符合预期,发现问题并及时修改。
五、实验评价1. 代码质量:代码结构清晰,注释详细,可读性强。
2. 功能实现:实验要求的功能全部实现,且运行稳定。
3. 算法效率:分析并优化算法,提高程序运行效率。
4. 实验报告:内容完整,包括实验目的、内容、步骤、总结等。
5. 团队协作:积极参与讨论,与团队成员共同解决问题。
六、实验一:线性表的实现与操作1. 实验目的:掌握顺序存储结构线性表的实现。
掌握链式存储结构线性表的实现。
熟悉线性表的基本操作,如插入、删除、查找等。
2. 实验内容:实现一个顺序存储结构线性表。
实现一个链式存储结构线性表。
实现线性表的插入、删除、查找等操作。
3. 实验步骤:设计顺序存储结构线性表的数据类型和操作函数。
实现链式存储结构线性表的数据类型和操作函数。
编写测试代码,验证线性表操作的正确性。
4. 实验评价:线性表结构设计合理,代码清晰。
能够正确实现线性表的基本操作。
测试代码全面,能够验证操作的正确性。
七、实验二:栈和队列的实现与操作1. 实验目的:理解栈和队列的基本概念。
掌握栈和队列的顺序存储结构实现。
c语言与数据结构实验指导完整版
Harbin Institute of TechnologyC语言与数据结构实验指导书刘梅索莹田文龙哈工大电子与信息工程学院电子工程系实验1 实验平台一、实验目的1.掌握Microsoft Visual C++ 集成环境的使用方法。
2.掌握C程序在Microsoft Visual C++ 开发环境中的编辑、编译、链接和运行全过程二、实验内容1)启动Microsoft Visual C++ 开发环境双击桌面应用程序图标或云兄“开始”菜单程序组中的Microsoft Visual C++ 应用程序,启动VC++,如图所示图 VC++初始界面2)建立C源程序文件方法1:单机工具栏的“新建文本文件”按钮,打开文本文件编辑界面如下图所示图文本文件编辑界面方法2:执行“文件”->“新建”命令,在“文件”选项卡下选择C++ Source File 文件类型,然后输入C源程序文件名和保存文职,如图所示,然后单击“确定”按钮,打开源程序文件编辑界面,如图所示。
注意:输入C源程序文件名时必须带上扩展“.c”,否则默认创建的是扩展名为“.cpp”的C++文件。
3)编辑源文件方法1:在如图所示的文本文件编辑界面中输入源程序代码,如图所示。
方法2:在如图所示的C源程序文件编辑界面中编辑源程序代码,如图所示。
图新建文件图 C源程序文件编辑界面图文本文件编辑界面编辑源文件图 C源程序编辑界面编辑源文件4)保存源文件源文件编辑结束后,执行“文件”->“保存”命令保存文件,文本文件编辑界面中编辑的源文件保存时必须在文件名后加上扩展名“.c”,否则保存的是扩展名为txt的文本文件,不能编译运行。
5)组件文件执行“组建”->“组建”命令或直接按F7功能键或单机工具栏Build按钮,可以对源文件进行编译、链接而不运行改程序。
当然也可以先执行“组建”->“编译”(快捷键Ctrl+F7)命令编译文件,再执行“组建”->“组建”(快捷键F7)命令链接文件。
数据结构C语言版实验报告完整版
数据结构C语言版实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】数据结构(C语言版) 实验报告专业:计算机科学与技术、软件工程学号:_______________________班级:_________软件二班______________姓名:________朱海霞______________指导教师:___刘遵仁________________青岛大学信息工程学院2013年10月实验1实验题目:顺序存储结构线性表的插入和删除实验目的:了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。
实验要求:建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。
实验主要步骤:1、分析、理解给出的示例程序。
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 10typedef struct{int* elem;int length;int listsize;}Sqlist;int InitList_Sq(Sqlist &L){=(int*)malloc(LIST_INIT_SIZE*sizeof(int));if(! return -1;=0;=LIST_INIT_SIZE;return OK;}int ListInsert_Sq(Sqlist&L,int i,int e){if(i<1||i>+1) return ERROR;if=={int *newbase;newbase=(int*)realloc,+LISTINCREMENT)*sizeof(int));if(!newbase) return -1;=newbase;+=LISTINCREMENT;}int *p,*q;q=&[i-1]);for(p=&[]);p>=q;--p)*(p+1)=*p;*q=e;++;return OK;}int ListDelete_Sq(Sqlist &L,int i,int e){int *p,*q;if(i<1||i>return ERROR;p=&[i-1]);e=*p;q=+;for(++p;p<=q;++p)*(p-1)=*p;;return OK;}int main(){Sqlist L;InitList_Sq(L);ertex=a; irstedge=NULL; irstedge;G->adjlist[i].firstedge=s; irstedge;G->adjlist[j].firstedge=s; //将新结点*S插入顶点Vj的边表头部}}//=========定义标志向量,为全局变量=======typedef enum{FALSE,TRUE} Boolean;Boolean visited[MaxVertexNum];//========DFS:深度优先遍历的递归算法======void DFSM(ALGraph *G,int i){ //以Vi为出发点对邻接链表表示的图G进行DFS搜索给出你的编码//==========BFS:广度优先遍历=========void BFS(ALGraph *G,int k){ //以Vk为源点对用邻接链表表示的图G进行广度优先搜索给出你的编码//==========主函数===========void main(){int i;ALGraph *G;G=(ALGraph *)malloc(sizeof(ALGraph));CreatALGraph(G);printf("Print Graph DFS: ");DFS(G);printf("\n");printf("Print Graph BFS: "); BFS(G,3);printf("\n");}实验结果:1.邻接矩阵作为存储结构2.邻接链表作为存储结构心得体会:实验6实验题目:二分查找算法的实现实验目的:掌握二分查找法的工作原理及应用过程,利用其工作原理完成实验题目中的内容。
数据结构实验指导书
数据结构实验指导书实验1:顺序表基本操作一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。
2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。
3.掌握对多函数程序的输入、编辑、调试和运行过程。
二、实验要求1.预习C语言中结构体的定义与基本操作方法。
2.对顺序表的每个基本操作用单独的函数实现。
3.编写完整程序完成下面的实验内容并上机运行。
4.整理并上交实验报告。
三、实验内容:1.编写程序实现顺序表的下列基本操作:(1)初始化顺序表La。
(2)将La置为空表。
(3)销毁La。
(4)在La中插入一个新的元素。
(5)删除La中的某一元素。
(6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。
(7)打印输出La中的元素值。
2.编写程序完成下面的操作:(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。
(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。
(3)假设两个顺序线性表La和Lb分别表示两个集合A和B,利用union_Sq操作实现A=A∪B。
四、思考与提高假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A ∩B ?一、实验目的1.学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。
2.掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。
二、实验要求1.预习C语言中结构体的定义与基本操作方法。
2.对单链表的每个基本操作用单独的函数实现。
3.编写完整程序完成下面的实验内容并上机运行。
4.整理并上交实验报告。
三、实验内容1.编写程序完成单链表的下列基本操作:(1)初始化单链表La。
(2)在La中插入一个新结点。
(3)删除La中的某一个结点。
(4)在La中查找某结点并返回其位置。
《数据结构》实验指导书(C语言版2014上半年改).
《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
数据结构实验指导书(C版)
数据结构实验指导书(C语言版)2017年9月目录1、顺序表的实现 (1)2、链栈的实现 (3)3、前序遍历二叉树 (5)4、图的深度优先遍历算法 (7)5、散列查找 (9)1、顺序表的实现1. 实验目的⑴掌握线性表的顺序存储结构;⑵验证顺序表及其基本操作的实现;⑶理解算法与程序的关系,能够将顺序表算法转换为对应的程序。
2. 实验内容⑴建立含有若干个元素的顺序表;⑵对已建立的顺序表实现插入、删除、查找等基本操作。
3. 实现提示定义顺序表的数据类型——顺序表结构体SeqList,在SeqList基础上实现题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。
简单起见,本实验假定线性表的数据元素为int型,要求学生:(1)将实验程序调试通过后,用模板类改写;(2)加入求线性表的长度等基本操作;(3)重新给定测试数据,验证抛出异常机制。
4. 实验程序在编程环境下新建一个工程“顺序表验证实验”,并新建相应文件,文件包括顺序表结构体SeqList的定义,范例程序如下:#define MaxSize 100 /*假设顺序表最多存放100个元素*/typedef int DataType; /*定义线性表的数据类型,假设为int型*/typedef struct{DataType data[MaxSize]; /*存放数据元素的数组*/int length; /*线性表的长度*/} SeqList;文件包括建立顺序表、遍历顺序表、按值查找、插入操作、删除操作成员函数的定义,范例程序如下:int CreatList(SeqList *L, DataType a[ ], int n){if (n > MaxSize) {printf("顺序表的空间不够,无法建立顺序表\n"); return 0;} for (int i = 0; i < n; i++)L->data[i] = a[i];L->length = n;return 1;}void PrintList(SeqList *L){for (int i = 0; i < L->length; i++)printf("%d ", L->data[i]); /*输出线性表的元素值,假设为int型*/ }int Locate(SeqList *L, DataType x){for (int i = 0; i < L->length; i++)if (L->data[i] == x) return i+1; /*返回序号*/return 0; /*退出循环,说明查找失败*/ }int Insert(SeqList *L, int i, DataType x){if (L->length >= MaxSize) {printf("上溢错误,插入失败\n"); return 0;} if (i < 1 || i > L->length + 1) {printf("位置错误,插入失败\n"); return 0;} for (int j = L->length; j >= i; j--) /*j表示元素序号*/L->data[j] = L->data[j - 1];L->data[i - 1] = x;L->length++;return 1;}int Delete(SeqList *L, int i, DataType *ptr){if (L->length == 0) {printf("下溢错误,删除失败\n"); return 0;} if (i < 1 || i > L->length) {printf("位置错误,删除失败\n"); return 0;} *ptr = L->data[i - 1]; /*取出位置i的元素*/for (int j = i; j < L->length; j++) /* j表示元素所在数组下标*/L->data[j - 1] = L->data[j];L->length--;return 1;}在定义了顺序表的存储结构SeqList并实现了基本操作后,程序中就可以使用SeqList 类型来定义变量,可以调用实现基本操作的函数来完成相应的功能。
数据结构c语言版实验教案
数据结构C语言版实验教案一、实验目的1. 理解数据结构的基本概念和原理。
2. 掌握C语言的基本语法和编程技巧。
3. 培养实际操作能力和问题解决能力。
二、实验内容1. 线性表的实现与操作。
2. 栈和队列的实现与操作。
3. 链表的实现与操作。
4. 树和图的实现与操作。
5. 排序和查找算法的实现与优化。
三、实验环境1. 操作系统:Windows或Linux。
2. 编程语言:C语言。
3. 编译器:GCC或Clang。
4. 开发工具:Visual Studio或Code::Blocks。
四、实验步骤1. 了解实验要求,阅读相关教材和资料。
2. 分析实验问题,设计实验方案。
3. 编写实验代码,进行调试和测试。
4. 分析实验结果,总结实验经验和教训。
5. 完成实验报告,提交实验代码和报告。
五、实验评价1. 代码规范性和可读性。
2. 实验问题的解决能力和创新性。
4. 实验操作的熟练程度和团队合作能力。
六、线性表的实现与操作1. 实验目的:学习线性表的基本概念。
掌握线性表的顺序存储结构和存储结构。
学会实现线性表的基本操作,如插入、删除、查找和打印。
2. 实验内容:实现一个简单的线性表。
实现线性表的插入和删除操作。
实现线性表的查找和打印操作。
3. 实验环境:同上。
4. 实验步骤:设计一个线性表的数据结构。
编写实现线性表操作的函数。
编写测试线性表操作的程序。
调试并运行程序,验证操作的正确性。
5. 实验评价:同上。
七、栈和队列的实现与操作1. 实验目的:理解栈和队列的基本概念和特点。
掌握栈和队列的顺序存储结构和存储结构。
学会实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
2. 实验内容:实现一个简单的栈。
实现一个简单的队列。
实现栈和队列的综合应用,如数制转换等。
3. 实验环境:同上。
4. 实验步骤:设计栈和队列的数据结构。
编写实现栈和队列操作的函数。
编写测试栈和队列操作的程序。
调试并运行程序,验证操作的正确性。
5. 实验评价:同上。
实验指导书-数据结构与算法20130430
《数据结构与算法》实验指导书湖南理工学院信息与通信工程学院信息工程教研室编写适用专业:信息工程电子信息工程通信工程自动化信息与通信工程学院前言本实验指导书是与《数据结构与算法》(C语言版,郭龙源胡虚怀何光明编著,清华大学出版社)一书配套的实验指导书,实验课时为24课时,共安排有12个实验。
实验设置采取先简后繁、先量少后量大、先精叙后粗讲的原则,建议在教授完第3章栈之后即开始实验,实验的安排应与教学进度相配合。
本实验指导书由湖南理工学院信息与通信工程学院信息工程教研室组织编写,其中邓涛老师编写了实验一至四和实验九至十二,邓涛和李文彬老师合作编写了实验五至八,严太山老师、齐琦老师和吴岳芬老师分别审订了实验一至四、实验五至八和实验九至十二。
2013年4月实验项目设置与内容提要根据各专业培养计划,数据结构与算法课程的实验学时一共安排了24学时。
本课程实验开设12个必修实验(24学时),每个实验都安排有预习内容、课堂实践内容和课后思考内容,要求学生课前学习预习内容,课中完成课堂实践内容,而课后思考内容学生则应根据掌握知识的程度选做。
实验一栈的定义(一)实验学时:2实验类型:综合实验要求:必修一、实验目的本实验作为课程配套实验的第一个实验,旨在帮助学生进一步理解数据结构—栈,并运用已学习的知识实现一个顺序栈。
与此同时,也对复杂程序的设计过程和常见的开发技巧进行一些介绍。
请同学们在学习完教材相关内容后、在阅读预习内容的同时或之后完成课堂实践内容。
二、预习内容1、关于抽象数据类型编写复杂程序或者大型程序是有基本步骤的,如果不按这些步骤来编写,则或者无法按期完成工作,或者完成的工作质量很差。
现在假设我们要编写一本书,例如我们手上的这本《数据结构与算法》教材,那么我们应该怎样来开始我们的工作呢?一般的写作过程是,首先确定这本书要编入哪些内容,这些内容应分布到哪些章节,这样就可以确定出这本书的目录及各章节的内容,然后再开始编写每一章节。
数据结构C版实验指导
《数据结构与算法》实验指导书一、实验课程教学目的和要求《数据结构与算法》是一门实践性很强的课程,光靠读书和做习题是不能提高实践能力的。
《数据结构与算法》的实验与程序设计语言课程中的实验不同,后者更多的强调语言方面的功能实现,而前者更接近实际,需要同学们自己分析问题,设计模型和算法,再上机调试完成。
《数据结构与算法》的实验的目的主要有两个:1)深化理解书本上的理论知识,将书本的知识变“活”(为已掌握,为已活用);2)理论和实践相结合,学会将相关的数据结构和算法应用于解决实际问题,培养数据结构的应用能力和软件工程所需要的实践能力。
《数据结构与算法》的实验类型1)验证性实验—主要是验证教材中已有的数据结构和算法。
2)设计性实验—针对具体问题,应用某一个知识点,自己设计数据结构和算法,培养对数据结构的简单运用能力。
3)综合性实验—针对具体问题,应用某几个知识点,自己设计数据结构和算法,培养对数据结构的综合运用能力。
《数据结构与算法》的实验安排《数据结构与算法》实验的一般步骤1)需求分析:要对简单的问题描述进行详细的分析,充分理解问题,明确问题要求做什么,有什么数据,边界条件……。
2)概要设计:针对问题描述中涉及到数据定义抽象数据类型,设计数据结构和算法模型。
本部分不必考虑实现的细节。
3)详细设计:设计具体的存储结构(用C++或C语言)。
此外,还要设计对象或函数间的调用关系及输入输出。
4)上机调试(运行代码,修正语法及逻辑错误)5)结果与总结《数据结构与算法》的实验要求:1)完成实验预习;2)完成并上交实验报告;3)完成电子设计文档预习/实验报告的格式要求:1)实验名称2)实验目的3)实验内容及要求4)概要设计:ADT5)详细设计:C++类或C函数6)调试分析:7)结果与总结实验一: 顺序表的操作一、实验目的:1)掌握线性表的顺序存储结构与算法实现;3)掌握顺序表的逻辑插入方法。
二、实验内容及要求:实现对有序的顺序表L进行保序插入的(C++或C)算法提示:主函数构建n个整数的顺序表L并调用输出函数;调用保序插入函数实现插入操作并调用输出函数输出。
数据结构 实验指导书
数据结构实验指导书数据结构实验指导书目录数据结构实验指导书 (1)目录 (1)实验指导书概述 (2)上机实验题目 (3)实验一 C语言相关知识复习 (3)一、实验目的 (3)二、实验内容 (3)实验二单链表的插入、删除 (3)一、实验目的 (3)二、实验内容 (3)三、实现提示 (4)实验三栈及其应用 (5)一、实验目的 (5)二、实验内容 (5)实验四二叉树的递归算法 (6)一、实验目的 (6)二、实验内容 (6)实验五图的遍历 (7)一、实验目的 (7)二、实验内容 (7)实验六有序表的查找 (7)一、实验目的 (7)二、实验内容 (7)实验七哈希表 (7)一、实验目的 (7)二、实验内容 (7)实验八内部排序算法的应用 (8)一、实验目的 (8)二、实验内容 (8)实验指导书概述“数据结构”是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。
本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了多种常用的查找和排序技术,并对其进行了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大难度:∙内容多,时间短,给学习带来困难;∙贯穿全书的动态链表存储结构和递归技术是学习中的重点和难点;∙隐含在各部分的技术和方法丰富,也是学习的重点和难点;∙先修课程中所介绍的专业性知识不多,加大了学习难度。
由于数据结构课程的技术性与实践性,《数据结构课程实验》的设置十分必要。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。
上机实践是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通过上机实践,使学生在可能短的时间内对数据结构知识的实践和应用有一个比较全面和系统的认识,达到理论与实践相结合的目的。
《数据结构》实验指导书(源代码)
实验一线性表的链式存储结构一、实验目的:1.掌握线性表的链式存储结构。
2.熟练地利用链式存储结构实现线性表的基本操作。
3.能熟练地掌握链式存储结构中算法的实现。
二、实验内容:1.用头插法或尾插法建立带头结点的单链表。
2.实现单链表上的插入、删除、查找、修改、计数、输出等基本操作。
三、实验要求:1. 根据实验内容编写程序,上机调试、得出正确的运行程序。
2. 写出实验报告(包括源程序和运行结果)。
四、实验学时:2学时五、实验步骤:1.进入编程环境,建立一新文件;2. 参考以下相关内容,编写程序,观察并分析输出结果。
①定义单链表的数据类型,然后将头插法和尾插法、插入、删除、查找、修改、计数、输出等基本操作都定义成子函数的形式,最后在主函数中调用它,并将每一种操作前后的结果输出,以查看每一种操作的效果。
②部分参考程序//单链表的建立(头插法),插入,删除,查找、修改、计数、输出#include<iostream.h>#define elemtype intstruct link{ elemtype data;//元素类型link *next; //指针类型,存放下一个元素地址};//头插法建立带头结点的单链表link *hcreat(){ link s,p;elemtype i;cout<<”输入多个结点数值(用空格分隔),为0时算法结束”;cin>>i;p=new link;p->next=NULL;while(i) //当输入的数据不为0时,循环建单链表{s=new link;s->data=i;s->next=p->next;p->next=s;cin>>i; }return p;}//输出单链表void print(1ink *head){1ink *p;p=head->next;while(p->next!=NULL){cout<<p->data<<”->”; //输出表中非最后一个元素p=p->next;}cout<<p->data; //输出表中最后一个元素cout<<endl;}∥在单链表head中查找值为x的结点Link *Locate(1ink *head,elemtype x){Link *p;p=head->next;while((p!=NULL)&&(p->data!=x))p=p->next;return p; }//在head为头指针的单链表中,删除值为x的结点void deletel(1ink *head,elemtype x){1ink *p, *q;q=head;p=head->next;while((p!=NULL)&&(p->data!=x)){q=p;p=p->next;}If(p==NULL) cout<<“要删除的结点不存在”;elseq->next=p ->next;delete(p);}}//在头指针head所指的单链表中,在值为x的结点之后插入值为y的结点void insert(1ink *head,elemtype x,elemtype y){ link *p, *s;s=new link;s->data=y;if(head->next==NULL) //链表为空{head->next=s;s->next=NULL:}p=Locate(head,x);//调用查找算法‘if(p==NULL)cout<<”插入位置非法”:else(s->next=p->next;p->next=s;}}//将单链表p中所有值为x的元素修改成y void change(1ink *p,elemtype x,elemtype y) {link *q;q=p->next;while(q!=NULL){ if(q->data==x) q->data=y;q=q->next;}}void count(1ink *h) //统计单链表中结点个数{1ink *p;int n=0;p=h->next;while(p!=NULL){n++;p=p->next;}return n;}void main(){ int n;elemtype x,y;link *p, *q;p=hcreat(); //头插法建立链表print(p); //输出刚建立的单链表cout<<”请输入要删除的元素”;cin>>y;deletel(p,y);print(p); //输出删除后的结果cout<<”请输入插入位置的元素值(将待插元素插入到它的后面)”; cin>>x;cout<<”请输入待插元素值”;cin>>y;insert(p,x,y);print(p); //输出插入后的结果cout<<”请输入要修改前、后的元素值”;cin>>x>>y;change(p,x,y);print(p);cout<<”请输入要查找的元素值”;cin>>x;q=Locate(p,x);if(q==NULL)cout<<x<<”不在表中,找不到!”<<endl;else cout<<x<<”在表中,已找到!”<<endl;n=count(p);cout<<”链表中结点个数为:”<<n<<endl:}//单链表的建立(尾插法)、插入、删除、查找、修改、计数、输出#include<iostream.h>#define elemtype intstruct link{ elemtype data;//元素类型link *next;//指针类型,存放下-个元素地址};//尾插法建立带头结点的单链表link *rcreat(){link *s, *p, *r;elemtype i;cout<<”输入多个结点数值(用空格分隔),为0时算法结束”; cin>>i;p=r=new link;p->next=NULL;while(i){s=new link;s->data=i;r->next=s;r=s;cin>>i; }r->next=NULL;return p;}//输出单链表void print(1ink *head){link *p;p=head->next;while(p->next!=NULL){cout<<p->data<<"->”; //输出表中非最后一个元素p=p->next;)cout<<p->data; //输出表中最后一个元素cout<<endl;}link *Locate(1ink *head,int x) ∥在单链表中查找第x个结点 {link *p;p=head;int j=0;while((p!=NULL)&&(j<x)){p=p->next; j++;}return p;}void delete I(1ink *head,elemtype x)//在head为头指针的单链表中,删除值为x的结点{link *p, *q;q=head;p=head->next;while((p!=NULL)&&(p->data!=x)){q=p;p=p->next;)if(p==NULL)cout<<”要删除的结点不存在“;else{q->next=p->next;delete(p);} }void insert(1ink *head,int x,elemtype y)//在头指针head所指单链表中,在第x个结点之后插入值为y的结点{link *p, *s;s=new link;s->data=y;if(head->next==NULL)//链表为空{head->next=s;s->next=NULL:}p=Locate(head,x); //调用查找算法if(p==NULL)cout<<”插入位置非法”;else{s->next=p->next;p->next=s;}}void change(1ink *p,elemtype x,elemtype y){∥将单链表P中所有值为x的元素改成值为ylink *q;q=p->next;while(q!=NULL){if(q->data==x)q->data=y;q=q->next;}}void count(1ink *h) //统计单链表中结点个数(1ink *p;int n=0;p=h->next;while(p!=NULL){n++;p=p->next;}retum n;}void main(){ int n;link p,q;p=rcreat();//尾插法建立链表print(p); //输出刚建立的单链表cout<<”请输入要删除的元素”;cin>>y;deletel(p,y);print(p); //输出删除后的结果cout<<”请输入插入位置”;cin>>x;cout<<”请输入待插元素值”;cin>>y;insert(p,x,y);print(p); //输出插入后的结果cout<<”请输入修改前、后的元素值”;cin>>x>>y;change(p,x,y);print(p);cout<<“请输入要查找的元素值”;cin>>x;q=Locate(p ,x);if(q==NULL)cout<<x<<”不在表中,找不到!”<<endl;else cout<<x<<”在表中,已找到!”<<endl;n=count(p);cout<<”链表中结点个数为:”<<n<endl;}六、选作实验试设计一元多项式相加(链式存储)的加法运算。
c语言与数据结构实验指导完整版
定”按钮,打开源程序文件编辑界面,如图1.4所示。
注意:输入C源程序文件名时必须带上扩展“.c”,否则默认创建的是扩展
名为“.cpp”的C++文件。
3)编辑源文件
方法1:在如图1.2所示的文本文件编辑界面中输入源程序代码,如图1.5所示。
a=getchar();
c=getchar();
prin tf("The character is:%c\ n\n",a);
prin tf("2 .In put a character:' n");
sca nf("%c",&b);
prin tf("The character is:");
putchar(b);
(4)根据实际情况确定各个变量在输出时的宽度和小数位数。
2)参考程序
#include“stdio.h”
#include“math.h”
mai n()
{
float a,b,c,s,area;
printf(“In put a,b,c:\n”);
scanf(“%f ,%f,%f”,&a,&b,&c);
方法2:在如图1.4所示的C源程序文件编辑界面中编辑源程序代码,如图1.6
所示。
图1.3新建文件
图1.4 C源程序文件编辑界面
• li<Virri*l
.fnfx
T-fctl i;M|11■■血 扇‘紙Tffkti唱帝,THij] 1!口 叩W i|,7
a|c«B0i-匸譚百 寰「P*
图1.5文本文件编辑界面编辑源文件
数据结构C语言版实验报告
苏州科技学院数据结构(C语言版)实验报告专业班级测绘0911学号0920115130姓名朱辉实习地点C1-203指导教师史守正实验四图一、程序设计的基本思想,原理和算法描述:图是一种较线性表和树更加复杂的一种数据结构,在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关,图主要有无向图,有向图等(1)建立无向网的邻接矩阵存储并输出,参考程序清单,实现无向图的邻接矩阵表示。
(2)建立图的邻接表存储并在此基础上实现图的深度优先遍历和广度优先遍历备注:无向图已完成,无向网需要自己建立(参照算法7.2);参照算法7.4, 7.5,7.6完成图的深度遍历,广度遍历;请添加适当的注释。
二、源程序及注释(打包上传):三、运行输出结果:四、调试和运行程序过程中产生的问题及采取的措施:在程序编辑的过程中,有许多地方出现不能顺序运行的,还有代码出现遗漏出错,图的遍历是重点但因为知识的残缺不能完整的编译出来,又或者编译的程序不能正确的得到结果,再通过多人合作共同讨论后得到了满意的解决。
五、对算法的程序的讨论、分析,改进设想,其它经验教训:经过这次这么复杂的程序实验,我终于发现了调用函数的巨大优越性,以前遇到都是很短的程序,感觉调用有点多余,但复杂的程序时,如果不采用调用的话,会使程序非常的乱,改程序时不知道从哪改,调用函数能够更好使程序简洁话,层次话,更加容易让人看懂这次试验的逻辑性给了我们很大启发通过本次实验让我对图有了更深刻的认识,再通过多次的更改后终于将实验做出来,在实验中也出现了许多问题,有不出结果,有不能运行的,但最终只要努力都会搞定的实验五查找一、程序设计的基本思想,原理和算法描述:实现二叉排序树上的查找、插入、删除算法。
具体实现要求:1.用二叉链表做存储结构,输入键值序列,利用查找、插入算法建立一棵二叉排序树。
2.按中序遍历这棵二叉排序树。
3.在二叉排序树上插入结点。
4.删除二叉排序树上的结点。
《数据结构》实验指导书(C语言版)(浦江学院)
实验1: 顺序表的操作实验一、实验名称和性质二、实验目的1.掌握线性表的顺序存储结构的表示和实现方法。
2.掌握顺序表基本操作的算法实现。
3.了解顺序表的应用。
三、实验内容1.建立顺序表。
2.在顺序表上实现插入、删除和查找操作(验证性内容)。
3.删除有序顺序表中的重复元素(设计性内容)。
四、实验的软硬件环境要求硬件环境要求:PC机(单机)使用的软件名称、版本号:Windows环境下的VC++6.0五、知识准备前期要求熟练掌握了C语言的编程规则、方法和顺序表的基本操作算法。
六、验证性实验1.实验要求编程实现如下功能:(1)根据输入顺序表的长度n和各个数据元素值建立一个顺序表,并输出顺序表中各元素值,观察输入的内容与输出的内容是否一致。
(2)在顺序表的第i个元素之前插入一个值为x的元素,并输出插入后的顺序表中各元素值。
(3)删除顺序表中第i个元素,并输出删除后的顺序表中各元素值。
(4)在顺序表中查找值为e的数据元素,如果查找成功,则显示“查找成功”和该元素在顺序表中的位置,否则显示“查找失败”。
2. 实验相关原理线性表的顺序存储结构称为顺序表,顺序表的存储结构描述为:#define MAXLEN 30 /*线性表的最大长度*/typedef struct{Elemtype elem[MAXLEN]; /*顺序表中存放元素的数组,其中elemtype为抽象数据类型,在程序具体实现时可以用任意类型代替*/int length; /*顺序表的长度,即元素个数*/}Sqlist; /*顺序表的类型*/【核心算法提示】(1)顺序表插入操作的基本步骤:要在顺序表中的第i个数据元素之前插入一个数据元素x,首先要判断插入位置i是否合法,假设线性表的表长为n,则i的合法值范围:1≤i ≤n+1,若是合法位置,就再判断顺序表是否满,如果满,则增加空间或结束操作,如果不满,则将第i个数据元素及其之后的所有数据元素都后移一个位置,此时第i个位置已经腾空,再将待插入的数据元素x插入到该位置上,最后将线性表的表长增加1。
数据结构实验C语言版(1)
南阳理工学院数据结构(C语言版)上机实验指导书软件学院·软件工程目录实验1 线性表应用实验2 栈和队列的应用 (14)实验3 线性表应用 (27)实验4 图论及其应用 (46)实验5 查找实验6 排序 (64)实验1 线性表应用一、实验目的3,了解和掌握线性表顺序存储和链式存储在计算机中的表示,基本操做在计算机中的实2,能够利用线性表结构对实际问题进行分析建模,利用计算机求解。
1,能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。
二、实验内容及步骤1、利用程序设计语言分别实现顺序表和链表的抽象数据类型。
2、掌握程序分文件(头文件和实现文件)书写的方式。
3、分别用顺序表和链表实现课本算法 2.2:合并两个非递减有序序列,并对其时间性能做出分析。
三、实验步骤与调试过程以线性表来描述一元多项式,储存结构采用单链表,每个结点储存的多项式中某一项的系数和指数,建立单链表时指数高的结点列于指数低的结点之后,即线性表的元素按指数递增有序排列。
四、实验结果五、疑难小结当线性表的长度变化较大,难以估计其存储规模,另外对线性表频繁进行插入和删除操作时,则采用链表作为存储结构可能会更好一些。
在实际应用中应该考虑以下因素:(1)应有利于运算的实现;(2)应有利于数据的特性;(3)应有利于软件环境。
六、主要算法和程序清单顺序表的非递减数列合并#include<stdio.h> /*包含输入输出头文件*/#define ListSize 100typedef int DataType;typedef struct{DataType list[ListSize];int length;}SeqList;void InitList(SeqList *L)/*将线性表初始化为空的线性表只需要把线性表的长度length置为0*/{L->length=0; /*把线性表的长度置为0*/}int ListEmpty(SeqList L)/*判断线性表是否为空,线性表为空返回1,否则返回0*/{if(L.length==0) /*判断线性表的长度是否为9*/return 1; /*当线性表为空时,返回1;否则返回0*/elsereturn 0;}int GetElem(SeqList L,int i,DataType *e)/*查找线性表中第i个元素。
数 据 结 构(C语言版) 实 验 指 导包含参考讲述
数据结构(C语言版)实验指导预备实验C语言的函数、数组、指针和结构体知识一、实验目的1、复习C语言中函数、数组、指针、结构体与共用体等的概念。
2、熟悉利用C语言进行程序设计的一般方法。
二、实验内容1、调试程序:输出100以内所有的素数(用函数实现)。
#include<stdio.h>int isprime(int n){ /*判断一个数是否为素数*/int m;for(m=2;m*m<=n;m++)if(n%m==0) return 0;return 1;}int main(){ /*输出100以内所有素数*/int i; printf("\n");for(i=2;i<100;i++)if(isprime(i)==1) printf("%4d",i);return 0;}运行结果:2、调试程序:对一维数组中的元素进行逆序排列。
#include<stdio.h>#define N 10int main(){int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;printf("\nthe original Array is:\n ");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){ /*交换数组元素使之逆序*/temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\nthe changed Array is:\n");for(i=0;i<N;i++)printf("%4d",a[i]);return 0;}运行结果:3、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
——信息管理系《数据结构》实验指导书《DATA STRUCTURES》罗先文LUOXIANWEN西南大学信息管理系Iinformation dept. SouthWest UniversityJanuary 24, 2010写在上机实习之前上机实践是学生对本门课程所学知识的一种全面、综合的能力训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节,也是对课堂教学与实践教学效果的一种检验。
通常,实习题中的问题比平时的习题复杂得多,也更接近实际。
实习着眼于原理与应用的结合,使学生学会如何把书上学到的知识运用于解决实际问题的过程中去,培养从事软件开发设计工作所必需的基本技能;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工程规范的训练和科学作风的培养。
此外,还有很重要的一点是:机器是比任何教师都严厉的主考者。
为了达到上述目的,本篇安排了7个主实习单元,各单元的训练重点在于基本的数据结构,而不强调面面俱到。
各实习单元与教科书的各章具有紧密的对应关系,在个别实习单元中安排有难度差别不等的多个实习题,以便学生选做。
此外,每个实习题采取了统一的格式,实验目的、实验内容、实验要求、程序实现、程序运行情况和源程序清单等5个部分组成。
在每个实习单元都提供了一个完整的实现代码,仅供同学们参考,绝大多数的同学在上机实习时千万不要机械的照抄本附录所提供的范文。
而是应该自己独立的思考和设计你的算法和程序,并争取在规定的时间内如期完成上机工作任务。
对于个别成绩较差的同学,实在是没法完成任务的建议你不妨抄一遍附录中的样题,以增强你的感性认识,强化你的实践基础,提高你的实践能力。
本附录样题全部用c语言编写,并全部上机调试通过,但由于时间比较仓促,样题中提供的算法和程序并不是最好的算法和程序,相信不少的同学一定有能力设计出更好的算法和程序。
随着计算机学科的不断发展,可以使用的语言工具越来越丰富,在本篇中的实习示例还只是应用面向过程的语言进行设计和编写的程序,同样的实习题,读者也可以用面向对象的语言来实现。
我们希望实习报告示例能起到一个抛砖引玉的作用,在经过同学们的努力学习和积极使用以后,更多更优良的设计范例能不断涌现。
文中存在的不妥之处,敬请各位不吝赐教!目录《数据结构》实验大纲 (4)实验一、线性表操作 (5)实验二、栈和队列的应用 (9)实验三、多维数组和串 (15)实验四、树和二叉树的操作 (20)实验五、图的操作 (26)实验六、各种查找操作 (33)实验七、各种排序操作 (40)《数据结构》实验大纲一.课程名称:数据结构及算法分析课程编号:课程学时:70课程学分:3.5实验时数:20二.所属实验室名称:计算机中心三.实验教材及参考书:【1】数据结构题集(C语言版)清华大学出版社2000年【2】DATA STRUCTURES WITH C++ 清华大学出版社【3】本材料之后的附录四.实验内容和目的:掌握四种基本数据结构:集合、线性结构、树形结构、网状结构在求解实际问题中的应用,以及培养书写规范文档的技巧。
学习基本的查找和排序技术。
要求学生具有编制相当规模的程序的能力。
养成一种良好的程序设计风格。
五.考核方式:上机考试、编程并运行通过。
六.实验环境:硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G,有软驱。
每个学生每次上机实验使用一台计算机。
软件:C语言或Visual C++6.0七.实验项目及安排实验一、线性表操作一、实验目的1.掌握用C语言调试程序的基本方法。
2.掌握线性表的基本运算,如插入、删除等。
二、实验内容1.线性表在顺序存储结构上的插入元素,删除元素运算2.线性表在链式存储结构上的建链表,插入结点,删除结点运算三、实验要求1.1.C++/C完成算法设计和程序设计并上机调试通过。
2.2.撰写实验报告,提供实验结果和数据。
3.3.分析算法,要求给出具体的算法分析结果,包括时间复杂度和空间复杂度,并简要给出算法设计小结和心得。
四、程序实现写出每个操作的算法(操作过程)五、程序运行情况写出输入数据及运行结果六、源程序清单。
程序1:顺序存储的线性表和运算#include<stdio.h>#define MAXSIZE 100int list[MAXSIZE];int n;/*insert in a seqlist*/int sq_insert(int list[], int *p_n, int i, int x){int j;if (i<0 || i>*p_n) return(1);if (*p_n==MAXSIZE) return(2);for (j=*p_n+1; j>i; j--)list[j]=list[j-1];list[i]=x;(*p_n)++;return(0);}/*delete in a seq list*/int sq_delete(int list[], int *p_n, int i){int j;if (i<0 || i>=*p_n) return(1);for (j = i+1; j<=*p_n; j++)list[j-1] = list[j];(*p_n)--;return(0);}void main(){int i,x,temp;printf("please input the number for n\n");printf("n=");scanf("%d",&n);for (i=0; i<=n; i++){printf("list[%d]=",i);scanf("%d",&list[i]);}printf("The list before insertion is\n");for (i=0; i<=n; i++) printf("%d ",list[i]);printf("\n");printf("please input the position where you want to insert a value\nposition=");scanf("%d",&i);printf("please input the value you want to insert.\nx=");scanf("%d",&x);temp=sq_insert(list,&n,i,x);switch(temp){case 0:printf("The insertion is successful!\n");printf("The list is after insertion is\n");for(i=0; i<=n; i++) printf("%d ",list[i]);printf("\n");printf("%d\n",n);break;case 1:case 2:printf("The insertion is not successful!\n");break;}/*deleting*/printf("The list before deleting is\n");for (i=0; i<=n; i++) printf("%d ",list[i]);printf("\n");printf("please input the position where you want to delete a value\nposition=");scanf("%d",&i);temp=sq_delete(list,&n,i);switch(temp){case 0:printf("The deleting is successful!\n");printf("The list is after deleting is\n");for(i=0; i<=n; i++) printf("%d ",list[i]);printf("\n");printf("%d",n);break;case 1:printf("The deleting is not successful!");break;}}程序2链式存储的线性表和运算#include<stdio.h>#include<malloc.h>struct node{char data;struct node *next;};typedef struct node NODE;/*This function creates a link_list with N nodes.*/NODE *create_link_list(int n){int i;NODE *head, *p, *q;if (n==0) return NULL;head = (NODE *) malloc(sizeof(NODE));p = head;printf("Please input %d chars for the link list\n",n);for (i=0; i<n; i++){scanf("%c ", &(p->data));q=(NODE *)malloc(sizeof(NODE));printf("test3\n");p->next=q;p=q;}scanf("%c ",&(p->data));getchar();p->next=NULL;return (head);}/*This function inserts a node whose value is b*//*before the node whose value is a, if the node is not exist,*/ /*then insert it at the end of the list*/void insert(NODE **p_head, char a, char b){NODE *p, *q;q = (NODE *)malloc(sizeof(NODE));q->data = b;q->next =NULL;if (* p_head == NULL) * p_head = q;else{p=(NODE*)malloc(sizeof(NODE));p = * p_head;while (p->data != a && p->next != NULL)p = p->next;q->next = p->next;p->next = q;}}/*The function deletes the node whose value is a,*//*if success, return 0, or return 1*/int deletenode(NODE **p_head, char a){NODE *p, *q;q=*p_head;if (q==NULL) return(1);if (q->data == a){* p_head = q->next;free(q);return (0);}else{while (q->data != a && q->next != NULL){p = q;q = q->next;}if (q->data == a){p->next = q->next;free(q);return(0);}else return(1);}}void main(){ NODE *my_head,*p;/* create a link list with m nodes */int m;char ch_a,ch_b;printf("please input the number of nodes for the link_list\nm=");scanf("%d",&m);getchar();printf("test1\n");my_head = (NODE *) malloc(sizeof(NODE));my_head=create_link_list(m);/*Output the link list*/printf("The link list is like:\n");p=my_head;while (p != NULL){printf("%c ",p->data);p=p->next;}printf("\n");/*insert a node whose value is b before a*/printf("Please input the position for a\n ch_a=");getchar();scanf("%c",&ch_a);getchar();printf("Please input the value that you want to insert\n ch_b=");scanf("%c",&ch_b);getchar();insert(&my_head,ch_a,ch_b);printf("The link list after insertion is like:\n");p=my_head;while (p != NULL){printf("%c ",p->data);p=p->next;}printf("\n");/*delete a node whose value is a*/printf("Please input the position for a a=");scanf("%c",&ch_a);getchar();deletenode(&my_head,ch_a);printf("The link list after deleting is like:\n");p=my_head;while (p != NULL){printf("%c ",p->data);p=p->next;}printf("\n");}实验二、栈和队列的应用一、实验目的1、掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。