数据结构实验指导书(C语言版)-罗先文

合集下载

数据结构实验指导书(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语言)实验报告

《数据结构》(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语言版实验教案

数据结构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语言与数据结构实验指导完整版

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语言版实验报告完整版

数据结构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上半年改).

《数据结构》实验指导书(C语言版2014上半年改).

《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。

在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。

数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。

通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。

另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。

二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。

另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。

三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。

具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。

2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。

对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。

数据结构实验指导书(C版)

数据结构实验指导书(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 类型来定义变量,可以调用实现基本操作的函数来完成相应的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。

相关文档
最新文档