数据结构实验一_第1页
数据结构实验一_第2页
数据结构实验一_第3页
数据结构实验一_第4页
数据结构实验一_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验01顺序表的基本操作实验学时:2学时实验类型:上机背景知识:顺序表的插入、删除及应用。目的要求:1.掌握顺序存储结构的特点。2.掌握顺序存储结构的常见算法。实验内容:编写一个完整的程序,实现顺序表的生成、插入、删除、输出等基本运算。(1)建立一个顺序表,含有n个数据元素。(2)输出顺序表。在顺序表中删除值为x的结点或者删除给定位置i的结点。实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。(5)输入整型元素序列,利用有序表插入算法建立一个有序表。*利用算法5建立两个非递减有序表A和B,并把它们合并成一个非递减有序表C。在主函数中设计一个简单的菜单,分别测试上述算法。(8)*综合训练:利用顺序表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等)。实验说明:1请构建多文件程序,算法1至算法6对应的函数原型声明存放在头文件SqList.h中,对应的函数实现存放在源文件SqList.c中;main()函数存放在另一个源文件中,该文件包含头文件SqList.h即可。2.类型定义#defineMAXSIZE100//表中元素的最大个数typedefintElemType;//元素类型typedefstruct{ElemType*elem;//线性表intlength;//表的实际长度intlistsize;//当前分配的存储容量}SqList;//顺序表的类型名3.建立顺序表时可利用随机函数自动产生数据。注意问题:1、插入、删除时元素的移动原因、方向及先后顺序。2、理解函数形参与实参的传递关系。部分源代码:DS.h#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#defineTRUE1#defineFALSE0#defineOK1#defineERROR0typedefintStatus;SqList.h#ifndefSQLIST_H_INCLUDED#defineSQLIST_H_INCLUDED#include"DS.h"typedefintElemType;typedefstruct{ElemType*elem;intlength;intlistsize;}SqList;voidmenu();StatusInitList_Sq(SqList&L,intn);/*初始化顺序表*/StatusCreateList_Sq(SqList&L);/*建立顺序表*/voidPrintList_Sq(SqListL);/*输出顺序表*/StatusDeleteList_Sq(SqList&L,inti,ElemType&e);/删除第i个元素*/StatusDeleteListX_Sq(SqList&L,ElemTypex);/删除值为x的元素*/StatusAdjustList_Sq(SqList&L);/*奇数排在偶数之前*/StatusOrderList_sq(SqList&L,intn);/*插入法生成递增有序表*/voidMergeList_Sq(SqListLa,SqListLb,SqList&Lc);/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/#endif//SQLIST_H_INCLUDEDSqList.cpp#include"SqList.h"voidmenu(){printf("\t\t\t顺序表基本操作\n\n");printf("\t\t\t1.建立顺序表\n");printf("\t\t\t2.遍历顺序表\n");printf("\t\t\t3删除第i个元素\n");printf("\t\t\t4删除值为x的元素\n");printf("\t\t\t5.奇数排在偶数之前\n");printf("\t\t\t6插入法生成递增有序表\n");printf("\t\t\t7•两个非递减有序表La和Lb合并成非递减有序表Lc\n");printf("\t\t\t0.退出\n\n”);}/*初始化顺序表*/StatusInitList_Sq(SqList&L,intn){L.elem=(ElemType*)malloc(n*sizeof(ElemType));if(!L.elem)exit(OVERFLOW);L.length=0;L.listsize=n;returnOK;}/*建立顺序表*/StatusCreateList_Sq(SqList&L){}/*输出顺序表*/voidPrintList_Sq(SqListL){}/*删除第i个元素*/StatusDeleteList_Sq(SqList&L,inti,ElemType&e){/*删除值为x的元素*/StatusDeleteListX_Sq(SqList&L,ElemTypex){}/*奇数排在偶数之前*/StatusAdjustList_Sq(SqList&L){}/*插入法生成递增有序表*/StatusOrderList_sq(SqList&L,intn){}/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/voidMergeList_Sq(SqListLa,SqListLb,SqList&Lc){}main.cpp#include"SqList.h"intmain(){intchoice,n,i,x;SqListL,La,Lb,Lc;while(1){menu();printf("选择你的操作:");scanf("%d",&choice);switch(choice){case1:if(CreateList_Sq(L))printf("顺序表创建成珈n");elseprintf("顺序表创建失败\n");break;case2:PrintList_Sq(L);break;case3:printf("请输入删除元素的位置:");scanf("%d",&i);if(DeleteList_Sq(L,i,x))printf("被删除元素值为:%d\n",x);elseprintf(”删除失败\n");break;case4:printf(”请输入删除元素值:");scanf("%d",&x);if(DeleteListX_Sq(L,x))printf("删除成功\n");elseprintf(”删除失败\n");PrintList_Sq(L);break;case5:AdjustList_Sq(L);printf(噺链表为:\n");PrintList_Sq(L);break;case6:printf("请输入顺序表长度:");scanf("%d",&n);if(OrderList_sq(L,n)){printf("值有序顺序表为:\n");PrintList_Sq(L);}elseprintf("顺序表创建失败\n");break;case7:printf("请输入顺序表La的长度:");scanf("%d",&n);OrderList_sq(La,n);printf("请输入顺序表Lb的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论