使用菜单方式实现顺序表的各种操作,包括创建、插入、删除、显示
中南大学数据结构演示系统课程设计实验报告

中南大学数据结构演示系统课程设计实验报告一、需求分析1、课程设计题目数据结构演示系统1(1)、顺序表的插入、删除和合并等基本操作(2)、利用插入运算建立链表;实现链表的查找、删除、计数、输出等功能以及有序链表的合并。
(3)、串的模式匹配(包括求next和nextval的值)。
2程序模块的功能要求(1)输入的形式和输入值的范围(2)顺序表和链表的输入形式是整形,输入值的范围是-32768~~32767。
串的输入形式是字符型(3)输出的形式顺序表和链表的输出形式是整形;串的输出形式是字符型。
(4)程序所能达到的功能;实现顺序表的创建、插入、删除和合并实现链表的创建、查找、删除、计数、输出和有序链表的合并实现串的模式匹配(包括求next和nextval的值)(5)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果顺序表的输入:12/26/65/65/216/898/989/2156链表输入:12/32/35/56/65/654/985二、概要设计1、定义定义顺序表的结构体typedef struct lnode{int data;struct lnode *next;}linklist;定义链表的的结构体typedef struct{int len;linklist *point;}indexlink;typedef struct{int data[MAXSIZE][MAXSIZE1+1];int len;定义串的结构体}sqlist;typedef struct{char string[MAXSIZE1];int len;}sstring;int next[MAXSIZE1];int nextval[MAXSIZE1];2 流程图(1)主界面(2)顺序表主流程图(3)顺序表插入流程图(4)链表主流程图)链表删除元素流程图(5(6)模式匹配主流程图(7)KMP求next【】流程图3各程序模块之间的层次关系(1)第一层为主界面函数,第二层为顺序表界面函数、链表界面函数、模式匹配界面函数第三层为顺序表子函数、链表子函数、模式匹配子函数(2)主界面函数调用的函数有sqlistfuc()、linklistfuc()、indexfuc()顺序表界面调用的函数有creatsq()、listinsert()、listdelete()、mergelist()链表界面调用的函数有creat()、insert()、delete()、search()、num()、linktraverse()、mergelink()、模式匹配界面调用的函数有creatstring()、KMP()三、详细设计见附录四、调试分析1、调试过程中遇到的问题是如何解决的以及对设计与实现的讨论和分析(1)一开始在在调试程序时遇到了内存错误,最终通过网上查资料找到了出错的原因:在建立对头指针和队尾指针时没有对指针进行初始化,即没有为指针动态分配空间。
顺序表——精选推荐

顺序表顺序表声明顺序表类型#define MaxSize 100typedef int ElemType;//假设顺序表中的元素类型typedef struct{ElemType data[MaxSize];//存放元素int length;//长度}SqList;//类型⼀、顺序表的基本运算⽅法1、初始化void InitList(SqList &L)2、销毁void DestroyList(SqList L)3、求长度int GetLength(SqList L)4、求第i个元素int GetElem(SqList L,int i,ElemType &e)5、按值查找int Locate(SqList L,ElemType x)6、插⼊int InsElem(SqList &L,ElemType x,int i)7、删除int DelElem(SqList &L,int i)8、输出void DispList(SqList L)9、判读是否为空bool ListEmpty(SqList L)//判断顺序表是否为空{return(L.length==0);}int GetLength(SqList L){return L.length;}SqList.cpp#include <stdio.h>#define MaxSize 100typedef int ElemType; //假设顺序表中所有元素为int类型typedef struct{ ElemType data[MaxSize]; //存放顺序表的元素int length; //顺序表的实际长度} SqList; //顺序表类型void InitList(SqList &L) //由于L要回传给值参,所以⽤引⽤类型{L.length=0;}void DestroyList(SqList L){}bool ListEmpty(SqList L)//判断顺序表是否为空{return(L.length==0);}int GetLength(SqList L){return L.length;}int GetElem(SqList L,int i,ElemType &e){ if (i<1 || i>L.length) //⽆效的i值return 0;else{ e=L.data[i-1];return 1;}}int Locate(SqList L,ElemType x){ int i=0;while (i<L.length && L.data[i]!=x)i++; //查找值为x的第1个元素,查找范围为0~L.length-1if (i>=L.length) return(0); //未找到返回0else return(i+1); //找到后返回其逻辑序号}int InsElem(SqList &L,ElemType x,int i){ int j;if (i<1 || i>L.length+1) //⽆效的参数ireturn 0;for (j=L.length;j>i;j--) //将位置为i的结点及之后的结点后移L.data[j]=L.data[j-1];L.data[i-1]=x; //在位置i处放⼊xL.length++; //线性表长度增1return 1;}int DelElem(SqList &L,int i){ int j;if (i<1 || i>L.length) //⽆效的参数ireturn 0;for (j=i;j<L.length;j++) //将位置为i的结点之后的结点前移L.data[j-1]=L.data[j];L.length--; //线性表长度减1return 1;}void DispList(SqList L){ int i;for (i=0;i<L.length;i++)printf("%d ",L.data[i]);printf("\n");}⼆、实验题⽬:设计⼀个程序sy1_main.cpp,并完成如下功能。
线性表的基本操作实验报告

实验一:线性表的基本操作【实验目的】学习掌握线性表的顺序存储结构、链式存储结构的设计与操作.对顺序表建立、插入、删除的基本操作,对单链表建立、插入、删除的基本操作算法。
【实验内容】1.顺序表的实践1)建立4个元素的顺序表s=sqlist[]={1,2,3,4,5},实现顺序表建立的基本操作.2) 在sqlist []={1,2,3,4,5}的元素4和5之间插入一个元素9,实现顺序表插入的基本操作。
3) 在sqlist []={1,2,3,4,9,5}中删除指定位置(i=5)上的元素9,实现顺序表的删除的基本操作。
2.单链表的实践3.1) 建立一个包括头结点和4个结点的(5,4,2,1)的单链表,实现单链表建立的基本操作。
2)将该单链表的所有元素显示出来。
3) 在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插入的基本操作。
4) 在一个包括头结点和5个结点的(5,4,3,2,1)的单链表的指定位置(如i=2)删除一个结点,实现单链表删除的基本操作。
5) 实现单链表的求表长操作.【实验步骤】1.打开VC++.2.建立工程:点File->New,选Project标签,在列表中选Win32 Console Application,再在右边的框里为工程起好名字,选好路径,点OK-〉finish。
至此工程建立完毕.3.创建源文件或头文件:点File->New,选File标签,在列表里选C++ Source File.给文件起好名字,选好路径,点OK。
至此一个源文件就被添加到了刚创建的工程之中.4.写好代码5.编译->链接->调试1、#include "stdio。
h”#include "malloc.h”#define OK 1#define OVERFLOW -2#define ERROR 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int ElemType;typedef int Status;typedef struct {ElemType *elem;int length;int listsize;} SqList;Status InitList( SqList &L ) {int i,n;L。
excel 基本知识

Excel 2003电子表格处理培训资料Excel 2003电子表格处理培训资料4.1 Excel 2003 2003概述Excel 2003是Office 2003的一个组件,是一个性能优越的电子表格软件,以表格和图表的形式组织和管理数据,而且方便数据的查找。
E xcel 广泛应用于财务、统计、数据分析领域,为日常数据处理带来很大的方便。
本章主要介绍Excel 2003的基本概念、基本操作、图表操作、数据管理功能。
4.2 Excel 2003的基本概念1.工作簿在Microsoft Excel 中,工作簿是处理和存储数据的文件。
一个Excel文件就是一个工作簿。
由于每个工作簿可以包含多张工作表,因此可以在一个文件中管理多种类型的相关信息。
新建一个Excel文件时默认显示三张工作表。
2.工作表工作表是Excel完成一项工作的基本单位。
使用工作表可以显示和分析数据。
可以同时在多张工作表上输入并编辑数据,并且可以对不同工作表的数据进行汇总计算和分析。
在创建图表之后,既可以将其置于源数据所在的工作表上,也可以放置在单独的图表工作表上。
工作表由单元格按行列方式排列组成;工作表的大小:65536行×256列;工作表中可以放置的对象可以是:字符、数字、公式或图表等;3.工作表标签工作簿窗口底部的工作表标签上显示工作表的名称。
如果要在工作表间进行切换,请单击相应的工作表标签。
工作表与工作表标签对应,打开具体某个工作表的方法是,点击相应的工作表标签。
右键点击工作表标签,显示工作表的多种操作命令,插入、命名、移动、复制和删除等。
4.单元格单元格是Excel工作表的基本元素,单元格中可以存放文字、数字和公式等信息。
单元格地址或为单元格引用的概念:用行号、列号表示,如图1中D3,在公式中引用。
当前单元格的概念(活动单元格):只能在当前单元格中输入信息,它的特征是黑色边框包围,单元格的引用会显示在名字框中,。
java顺序表的基本操作代码

java顺序表的基本操作代码Java顺序表是一种基于数组实现的线性结构,具有随机访问、元素插入和删除等基本操作。
在Java中,我们可以通过定义一个数组来创建一个顺序表,并通过编写一些基本操作代码来实现对该顺序表的操作。
一、顺序表的定义和初始化在Java中,我们可以通过定义一个数组来创建一个顺序表。
下面是一个简单的代码示例:```public class SeqList<T> {private Object[] elementData; // 存储元素的数组private int size; // 当前元素个数// 构造函数public SeqList(int capacity) {elementData = new Object[capacity];size = 0;}}```在上述代码中,我们定义了一个SeqList类,其中包含了存储元素的数组elementData和当前元素个数size两个成员变量。
构造函数SeqList(int capacity)用于创建指定长度为capacity的数组,并将当前元素个数初始化为0。
二、顺序表的插入操作1. 在指定位置插入元素在Java中,我们可以通过下标来访问数组中的元素。
因此,在进行插入操作时,需要先将要插入位置之后的所有元素向后移动一位,然后再将新元素插入到指定位置上。
下面是一个简单的代码示例:```// 在指定位置插入元素public void insert(int index, T element) {if (index < 0 || index > size) {throw new IndexOutOfBoundsException("插入位置越界"); }// 判断数组是否已满,若已满则扩容if (size == elementData.length) {ensureCapacity(size * 2);}// 将要插入位置之后的所有元素向后移动一位for (int i = size - 1; i >= index; i--) {elementData[i + 1] = elementData[i];}// 插入新元素elementData[index] = element;size++;}// 扩容方法private void ensureCapacity(int minCapacity) {if (minCapacity > elementData.length) {Object[] newArray = new Object[minCapacity];System.arraycopy(elementData, 0, newArray, 0, size);elementData = newArray;}}```在上述代码中,我们首先判断要插入的位置是否越界。
数据结构顺序表代码

数据结构顺序表代码很高兴回答这个问题。
关于数据结构的顺序表代码,我们需要先了解什么是顺序表以及其特点和常用操作。
顺序表是一种基于数组实现的线性数据结构,其特点是元素在内存中是连续存储的,可以支持快速随机访问,但插入和删除元素比较麻烦。
下面是一份简单的顺序表代码:```#define MAXSIZE 100 //定义顺序表的最大长度typedef struct {int data[MAXSIZE]; //用数组存储顺序表的元素int length; //顺序表的当前长度} SeqList;// 初始化顺序表void InitList(SeqList *L){memset(L->data, 0, sizeof(L->data)); //初始化所有元素为0L->length = 0; //长度为0}// 插入元素bool ListInsert(SeqList *L, int pos, int val){if(pos < 1 || pos > L->length + 1 || L->length == MAXSIZE) //判断是否越界或者表满return false;for(int i = L->length; i >= pos; i--) //从后向前移动元素L->data[i] = L->data[i - 1];L->data[pos - 1] = val; //插入新元素L->length++; //长度加1return true;}// 删除元素bool ListDelete(SeqList *L, int pos){if(pos < 1 || pos > L->length) //判断是否越界return false;for(int i = pos - 1; i < L->length - 1; i++) //从前向后移动元素 L->data[i] = L->data[i + 1];L->length--; //长度减1return true;}// 查找元素int LocateElem(SeqList L, int val){for(int i = 0; i < L.length; i++){ //遍历顺序表找到元素 if(L.data[i] == val)return i + 1;}return 0;}// 获取元素int GetElem(SeqList L, int pos){if(pos >= 1 && pos <= L.length) //判断是否越界 return L.data[pos - 1];elsereturn -1;}// 输出顺序表void PrintList(SeqList L){for(int i = 0; i < L.length; i++)printf("%d ", L.data[i]); //输出每个元素printf("\n");}```以上就是一个简单的顺序表代码实现,包括初始化、插入、删除、查找、获取和输出操作。
未来教育计算机二级wps考试题库
未来教育计算机二级wps考试题库未来教育计算机二级WPS考试题库参考内容第一部分:Word篇1. 基础操作- Word界面介绍:包括标题栏、菜单栏、工具栏、状态栏等各个部分的功能和作用。
- 文档的创建与保存:新建文档、打开已有文档、保存文档的操作方法。
- 文本输入与编辑:包括插入与删除文字、复制与粘贴内容、撤销与重做操作等。
2. 文本格式化与排版- 字体与字号的设置:如何设置文字的字体风格和大小,以及加粗、倾斜、下划线等效果。
- 段落格式化:如何对段落进行对齐、缩进、行间距、段前段后距离等格式设置。
- 列表的使用:如何创建有序和无序列表,并对列表进行格式化。
3. 页面设置与样式应用- 页面边距设置:如何调整页边距大小,使文档的版面符合要求。
- 页眉与页脚的添加与编辑:如何添加页眉和页脚,以及在页眉页脚中插入页码、日期等信息。
- 样式应用:如何使用和修改现有的样式,以及自定义样式的创建与应用。
4. 图片与表格插入- 图片的插入与格式化:如何在文档中插入图片,并进行旋转、缩放、裁剪、对齐等操作。
- 表格的创建与编辑:如何创建表格、调整单元格大小、合并与拆分单元格、添加表格样式等操作。
第二部分:Excel篇1. 数据输入与格式设置- 单元格的输入与编辑:如何在单元格中输入数据,以及对单元格中的数据进行修改和删除。
- 单元格格式设置:如何设置数据的格式,包括数值格式、日期格式、文本格式等。
- 列宽与行高设置:如何调整列的宽度和行的高度,以适应数据显示的需求。
2. 公式与函数的使用- 基本公式的输入与编辑:如何使用基本运算符进行加减乘除等运算,并在单元格中显示计算结果。
- 常用函数的使用:如SUM、AVERAGE、MAX、MIN等函数的使用方法和示例。
- 函数的嵌套与组合:如何将多个函数嵌套使用,以及如何通过函数组合实现复杂的计算。
3. 数据筛选与排序- 数据筛选:如何通过筛选功能,按条件过滤数据并显示所需内容。
word 2003表格使用基本方法
Microsoft word 2003表格使用基本方法1.Word2003的启动方法方法一、左键单击“开始→程序→Microsoft Office→Microsoft word 2003 ”进入。
方法二、通过已有的word文件进入。
方法三、桌面快捷启动方式。
2.插入/表格单击“表格”菜单中的“插入”项,选择“表格”命令,在弹出的对话框中输入表格的行数为7,列数为4。
单击“确定”按钮,简单的表格就生成了。
3.基本表格的创建用插入表格对话框创建表格执行【表格】→【插入】→【表格】命令4.用表格和边框绘制表格在【表格和边框】工具栏中单击【绘制表格】按钮5.复制、粘贴表格单击左上方的四个箭头的图标,选中整个表格,按下“Ctrl+c”进行复制。
然后把光标放到表格下方的硬回车标记前,按下“Ctrl+v”进行粘贴,连续按下“Ctrl+v”,即可得到需要的作文稿纸了。
对于完整16开稿纸的制作,就用上面的方法复制到右半部分就可以了。
6.显示或隐藏工具栏工具栏前面带“√”标记的工具栏是已经显示出来的工具栏。
可以通过以下方法实现:选择“视图->工具栏”菜单7.保存文档选择“文件->保存”命令CTRL+S 选择“文件->另存为”命令8.插入日期和时间在文档中插入日期和时间,可按以下步骤进行:1.将光标置于要插入日期或时间的位置。
2.执行“插入”→“日期和时间”,打开“日期和时间”对话框。
3.在“语言”框中选择应用的语言。
4.在“可用格式”框中选择日期或时间格式。
5.若要使日期和时间能够自动更新,需选中“自动更新”复选框,日期或时间将作为域插入;如果要将插入的原始日期和时间保持为静态文本,可清除“自动更新”复选框。
清除此复选框后,将出现一个“使用全角字符”选项,选中它则插入的时间和日期将以全角显示。
9.删除、移动和复制文本当选定文本后.即可对其进行删除、移动、复制等操作。
CTRL+C:复制 CTRL+V:粘贴 CTRL+X:剪切10.撤消与恢复当需要撤消上一步操作时,单击“常用”工具栏中的“撤消”按钮,或者选择“编辑->撤消”命令,或者按快捷键CTRL+Z即可如果需要撤消多步操作,则可以单击右边的三角形下拉按钮,打开下拉列表选择需要撤消的操作。
顺序表程序
#include <stdio.h>#include <stdlib.h>#include <conio.h>#define Maxsize 1024typedef char datatype;typedef struct {datatype data[Maxsize];int length;}Seqlist;Seqlist *L;Seqlist *create(){int i=0;char ch;L=(Seqlist *)malloc(sizeof (Seqlist));L->length=-1;printf("\t\t请输入顺序表L中的元素,以#结束\n"); while((ch=getche())!='#'){L->data[i++]=ch;L->length++;}return L;}void output(Seqlist *L){int i;printf("\n顺序表L中的元素为:");for (i=0;i<=L->length;i++)printf("%c",L->data[i]);printf("\n");}void getdata(Seqlist *L){int i;printf("查找顺序表中的第i个元素i:");scanf("%d",&i);if(i<1||i>L->length)printf("position is error\n");elseprintf("顺序表中第%d个元素的值是%c;\n",i,L->data[i-1]); }void locate(Seqlist *L){int i;char e;i=0;printf("请输入要查找的元素:");e=getch();while ((i<=L->length)&&(L->data[i]!=e))i++;if(i<L->length)printf("找到顺序表中值为%c的元素的位置%d\n",e,i+1); elseprintf("顺序表中不存在元素%c\n",e);}void lnslist( Seqlist *L){int i,k;char e;printf("请在第i个元素前插入元素:i=");scanf("%d",&i);printf("请输入要插入的元素:\n");e=getch();if((i<1)||(i>L->length)){printf("插入位置i值不合法");}if(L->length>=Maxsize){printf("表已满,无法插入");}L->length++;for(k=L->length;k>=i-1;k--)L->data[k+1]=L->data[k];L->data[i-1]=e;output(L);}void delist(Seqlist *L){int i,k;char e;printf("请输入要删除元素的位置i:"); scanf("%d",&i);if((i<1)||(i>L->length)){printf("删除位置不合法");}e=L->data[i-1];for(k=i-1;k<=L->length-1;k++)L->data[k]=L->data[k+1];L->length--;output(L);}int menu_select()/*系统菜单*/{int a;printf("\n*_* 按任意键清屏并返回主菜单! *_* \n");getch();system("cls");printf("********************MENU*********************\n") ;printf("1.........输出顺序表中的元素\n");printf("2.........按序号查找顺序表中的元素\n");printf("3.........按值查找顺序表中的元素\n");printf("4.........顺序表中插入一个元素\n");printf("5.........顺序表中删除一个元素\n");printf("6.........退出\n");printf("**********************************************\n");do{printf("请输入你的选择(1~6):");scanf("%d",&a); }while (a<1||a>6);return a;}void main(){L=create();for(;;){switch(menu_select()){ case 1:output(L);break;case 2:getdata(L);break;case 3:locate(L);break;case 4:lnslist(L);break;case 5:delist(L);break;case 6:exit(0);}} }。
一级计算机基础及WPS Office应用计算机等级考试试题及答案指导(2024年)
2024年计算机等级考试一级计算机基础及WPS Office应用自测试题及答案指导一、单项选择题(本大题有20小题,每小题1分,共20分)1、在计算机中,通常将()作为计算机的存储设备。
A. CPUB. 内存C. 硬盘D. 键盘答案:C解析:硬盘是计算机中常用的存储设备,用于存储大量的数据,如操作系统、应用程序、用户文件等。
而CPU是中央处理器,负责计算机的运算和控制;内存是计算机的临时存储器,用于存放当前正在运行的程序和数据;键盘是计算机的输入设备,用于输入指令和数据。
2、WPS Office软件中,要插入一个表格,以下哪个操作是正确的?A. 在“插入”菜单中选择“表格”B. 在“开始”菜单中选择“表格”C. 在“视图”菜单中选择“表格”D. 在“工具”菜单中选择“表格”答案:A解析:在WPS Office软件中,要插入一个表格,应该在“插入”菜单中选择“表格”。
这是因为在“插入”菜单中提供了插入不同类型元素的功能,包括表格、图片、文本框等。
其他选项中的菜单并不包含插入表格的选项。
3、在WPS文字中,以下哪种操作可以快速将选中的文本内容居中对齐?A. 点击“格式”菜单,选择“段落”,然后在“对齐方式”中选择“居中”B. 直接按键盘上的“Ctrl+E”键C. 点击“开始”选项卡,在“段落”组中找到“居中对齐”按钮并点击D. 按住“Shift”键,然后点击“格式”菜单,选择“段落”,在“对齐方式”中选择“居中”答案:C解析:在WPS文字中,要实现文本的居中对齐,可以通过点击“开始”选项卡,然后在“段落”组中找到“居中对齐”按钮并点击来实现。
其他选项中提到的操作方法也是可以实现的,但题目要求选择“快速”的操作方式,因此C选项是最直接和快捷的方法。
4、在WPS表格中,如果要删除一整行,以下哪种方法最为直接?A. 在该行左侧的行号上单击鼠标右键,选择“删除行”B. 点击“开始”选项卡,在“单元格”组中找到“删除”按钮,然后选择“整行删除”C. 按住“Ctrl”键,在该行任意单元格上单击鼠标左键,然后按“Delete”键D. 在该行任意单元格上单击鼠标左键,然后按“Backspace”键答案:A解析:在WPS表格中,最直接删除一整行的操作是在该行左侧的行号上单击鼠标右键,然后在弹出的菜单中选择“删除行”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 顺序表的实现和应用
实验目的:
⑴熟悉线性表的定义和基本操作;
⑵掌握线性表的顺序存储结构设计与基本操作的实现。
实验内容与要求:
⑴定义线性表的顺序存储表示;
⑵基于所设计的存储结构实现线性表的基本操作;
⑶编写一个主程序对所实现的线性表进行测试;
⑷线性表的应用:
① 使用菜单方式实现顺序表的各种操作,包括创建、插入、删除、显示。
程序设计:
一、
#include
#include
#define maxsize 1024
typedef struct
{
int data[maxsize]; //定义线性表
int last;
}SqList;
void main()
{
int CREAT(SqList *L);
int INSERT(SqList *L);
int DELETE(SqList *L);
int DISPLAY(SqList *L);
int i;
SqList List;
SqList *p;
p = &List;
printf("本程序用来实现顺序结构的线性表。\n");
printf("可以实现创建、插入、删除、显示等操作。\n");
printf("1:创建顺序表\n");
printf( "2:插入一个数据 \n");
printf("3:删除一个数据\n");
printf("4:显示全部据\n");
printf("5:返回结束程序\n");
while(1)
{
printf("\n选择进行的操作:");
do
{
scanf("%d",&i);
if(i<1||i>5)
printf("输入错误,重新输入正确的数字\n");
}while(i<1||i>5);
switch(i) //菜单选择,用swith函数实现
{ case 1:CREAT(p);break;
case 2:INSERT(p);break;
case 3:DELETE(p);break;
case 4:DISPLAY(p);break;
case 5:exit(0);break;
}
}
}
//创建顺序表的函数
int CREAT(SqList *L)
{
int i,n;
do
{
printf("输入需要建立的数据个数");
scanf("%d",&n);
if(n<1||n>maxsize)
printf("输入错误,请重新输入");
}while(n<1||n>maxsize); //直到输入正确的创建数据个数才能进行随机数的产生
(*L).last=n;
for(i=0;i
for(i=0;i
printf("%5d",(*L).data[i]);
if((i+1)%10==0) printf("\n"); //每输出十个数据换一行
}
return 0;
}
//插入数据的函数
int INSERT(SqList *L)
{ int i,j;
int x;
if((*L).last<1)
printf("数据为空,请先创建顺序表");
else
{
do //输入插入的数据,直到输入的数据是在1~100的,
才能继续下面的程序
{
printf("请输入你要插入的数据(1~100)");
scanf("%d",&x);
if(x<1||x>100)
printf("请重新输入正确的数据");
} while(x<1||x>100);
do //输入数据插入的位置直到输入正确的位置
{printf("请输入你要插入的位置");
scanf("%d",&i);
if(i<1||i>(*L).last+2)
printf("请重新输入正确的位置");
}while(i<1||i>(*L).last+2);
for(j=(*L).last;j>=i-1;j--) //将要插入数据位置后面的数据全部向后移动一
位
(*L).data[j+1]=(*L).data[j];
(*L).data[i-1]=x; //将数据插入到指定的位置
(*L).last=(*L).last+1; //顺序表的长度加1
for(j=0;j<(*L).last;j++) //输出插入一个数据后的顺序表
{
printf("%5d",(*L).data[j]);
if((j+1)%10==0) printf("\n"); //每输出十个数据换一行
}
}
return 0;
}
//删除一个数据的函数
int DELETE(SqList *L)
{
int i,j;
if((*L).last<1)
printf("数据为空,请先创建顺序表");
else
{
do //输入你需要删除的
数据,直到输入的数字正确
{ printf("请输入你需要删除第几个数据");
scanf("%d",&i);
if(i<1||i>(*L).last+1)
printf("请重新输入正确的位置数字");
}while(i<1||i>(*L).last+1);
for(j=i;j<=(*L).last;j++) //把删除的数据删除,然后后面的每
个数据往前进一位
(*L).data[j-1]=(*L).data[j];
(*L).last--; //数据的长度减1
for(j=0;j<(*L).last;j++) //输出删除一个数据后的链表
{ printf("%5d",(*L).data[j]);
if((j+1)%10==0)
printf("\n");
}
}
return 0;
}
//输出全部数据的函数
int DISPLAY(SqList *L)
{ int i;
if((*L).last<1) //如果没有建立数据,必须先创建
printf("数据为空,请先创建顺序表");
else
{
for(i=0;i<(*L).last;i++) //输出全部的数据,在各种操作后的数据
printf("%5d",(*L).data[i]);
if((i+1)%10==0)
printf("\n");
}
return 0;
}
运行结果:
本程序用来实现顺序结构的线性表。
可以实现创建、插入、删除、显示等操作。
1:创建顺序表
2:插入一个数据
3:删除一个数据
4:显示全部据
5:返回结束程序
选择进行的操作:1
输入需要建立的数据个数8
42 68 35 1 70 25 79 59
选择进行的操作:2
请输入你要插入的数据(1~100)77
请输入你要插入的位置4
42 68 35 77 1 70 25 79 59
选择进行的操作:3
请输入你需要删除第几个数据2
42 35 77 1 70 25 79 59
选择进行的操作:4
42 35 77 1 70 25 79 59
选择进行的操作:5