线性表及其实现(实验二)分析报告.docVIP

  • 6
  • 0
  • 约 21页
  • 2017-02-09 发布于湖北
  • 举报
实验 二 线性表及其实现 实验目的及要求 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现,以线性表的各种操作(建立、插入、删除等)的实现为实验重点; 通过本次实验帮助学生加深对顺序表、链表的理解,并加以应用; 掌握循环链表和双链表的定义和构造方法 二.实验内容: 编程实现线性表基本操作的实现创建、插入、删除和查找L,并编写程序实现: 将x插入其中后仍保持L的有序性; 将数据值介于min和max之间的结点删除,并保持L的有序性; 将单链表L逆置并输出; 编程实现将两个按元素递增有序的单链表合并为一个新的按元素递增的单链表。 三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页) 编程实现线性表基本操作的实现创建、插入、删除和查找 程序代码: 顺序存储: : #define INIT_SIZE 100 #define INCREMENT 10 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize; }Sq; Status Init_Sq(Sq L); Status Insert_Sq(Sq L,int i,ElemType e); Status Delete_Sq(Sq L,int i,ElemType e); 主函数: #includestdio.h #include1.h #includestdlib.h int main() { Sq L; printf(1、建立\n); printf(2、退出程序\n); int a;//选择是否建立 scanf(%d,a); switch(a) { case 1: Init_Sq(L); break; case 2: printf(程序结束!\n); exit(OVERFLOW); default:printf(输入错误!\n); } printf(请输入要放入顺序表中的元素个数(不要超过100)\n); scanf(%d,L.length); int i;//进行用户输入循环 printf(请输入具体元素\n); for(i=0;iL.length;i++) { scanf(%d,L.elem[i]); } int b;//选择操作 do{ printf(请选择下列操作\n); printf(1、向表中添加元素\n); printf(2、删除表中某一元素\n); printf(3、退出程序\n); scanf(%d,b); switch(b) { case 1: ElemType x;//新元素 int c;//新元素位置 printf(请输入要添加的元素,和添加的位置(空格隔开)\n); scanf(%d%d,x,c); Insert_Sq(L,c,x); int j;//新表输出循环 printf(新表为:\n); for(j=0;jL.length;j++) { printf(%d ,L.elem[j]); } printf(\n); break; case 2: int d;//需要删除元素的位置 ElemType y;//被删除的元素 printf(请输入删除元素的位置\n); scanf(%d,d); Delete_Sq(L,d,y); printf(被删除的元素是%d\n,y); printf(剩下的元素为:\n); int f;//输出循环 for(f=0;fL.length;f++) { printf(%d ,*(L.elem+f)); } printf(\n); break; case 3: printf(程序结束!\n); exit(OVERFLOW); default:printf(输入

文档评论(0)

1亿VIP精品文档

相关文档