201560140140--袁若飞--实验1:线性表的基本操作及其应用

合集下载

线性表的操作与应用(算法与数据结构课程设计)

线性表的操作与应用(算法与数据结构课程设计)

线性表的操作与应用一、问题描述线性表是一种常见的数据结构,它在实际中有着广泛的应用。

本文要求实现线性表的就地逆置操作,并选择合适的存储结构,以同学录为例完成线性表的建立、查找、插入、删除、修改等操作来实现有关线的操作与应用。

二、基本要求1、采用顺序和链式存储结构,分别实现线性表的就地逆置操作;2、采用双向链表,实现报数游戏:即n个人报数,先向n端报数,报到m出列。

当报数到达表尾时,再向表尾向1端报数。

如此反复,求出列顺序。

3、选择合适的存储结构,以同学录为例完成线性表的建立、查找、插入、删除、修改等操作。

三、测试数据1、就地逆置的数据为:1 3 5 7 92、报数游戏的数据为:10个人1到3报数3、同学录得数据为:1)建立的数据: 学号姓名性别101 lining nan228 zhougao nan335 fangqian nv2) 查找的数据: 学号:2283)插入的数据: 434 meixu nan4)删除的数据: 学号:2285) 修改的数据: 335 fangqian nan四、算法思想1、就地逆置的算法思想:1)链式结构:从头到尾扫描单链表L,将头节点的next域置为NULL,将原链表的每个元素节点依次插入头节点。

2)顺序结构:利用原有的存储空间,设置一个变量t,再利用循环表的两个方向向表中间进行表头表尾的交换。

2、报数游戏的算法思想:在实现双向链表的基本操作:建立,插入,删除后,用for 循环从1到m报数,在循环中:1)用标志ch判断是向前或向后报数。

2)当到达表头或表尾时,改变指针方向和报数方向。

3)每当报数到3或只剩两个结点时,删除所报数在的结点,并将m置为-1。

3、同学录的算法思想:选择链式结构作为个人信息的存储结构,用链表的基本操作:建立、插入、删除等算法,完成同学录的建立、查询、显示信息等功能,再用switch语句来判断想要实现的功能。

五、模块划分1、就地逆置链式结构:1)void InitList(LinkList *L),初始化链表。

线性表的基本操作实验报告

线性表的基本操作实验报告

实验一:线性表的基本操作【实验目的】学习掌握线性表的顺序存储结构、链式存储结构的设计与操作。

对顺序表建立、插入、删除的基本操作,对单链表建立、插入、删除的基本操作算法.【实验内容】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.elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof (ElemType)); if (!L.elem) return(OVERFLOW);printf(”输入元素的个数:”);scanf(”%d”,&n);printf(”输入各元素的值:”);for(i=0;i〈n;i++)scanf("%d",&L.elem[i]);L.length = n;L。

实验一 线性表的操作及应用

实验一 线性表的操作及应用
while(p&&j<i)
{
p=p->next;
++j;
}
if ( !p||j>i )
{
printf("参数 i 错或单链表不存在");
return (NULL);
} /*第i个结点不存在*/
return (p);
}
int Insert_LinkList( LinkList H, int i, DataType x)
scanf("%d%d",&n,&m);
for(j=0;j<n;j++)
{
printf("请输入要插入的第%d个元素:",j+1);
scanf("%d",&x);
y=Insert_LinkList( L,m,x);
if(y==1)
{
y=0;
printf("成功插入第%d个元素。\n",j+1);
}
}
代码:
#include <stdio.h>
#include <malloc.h>
typedef int DataType;
typedef struct node{
DataType data; /*每个元素数据信息*/
struct node *next; /*存放后继元素的地址*/
} LNode, *LinkList;
y=0;
/*(将单链表逆置,并输出逆置后单链表中的元素)*/
InvertList(L);
y=Print_LinkList(L);

线性表的基本操作

线性表的基本操作

实验一:线性表的基本操作一、实验目的:(1)掌握线性表的基本运算,熟悉对线性表的一些基本操作和具体的函数定义。

(2)掌握顺序存储的概念,学会定义线性表的顺序存储类型。

(3)熟悉C语言程序的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互联系及各自的作用。

(4)熟悉C语言环境的使用以及多文件程序的输入、编辑、调试和运行的全过程。

(5)加深对顺序存储结构的理解,逐步培养解决实际问题的能力。

二、实验要求:(1)熟练掌握线性表的存储结构及其操作。

(2)理解实训案例的算法,掌握线性表在实际中的运用。

(3)将上机程序全部调试通过。

(4)独立完成一个至两个实训项目,保存程序运行结果,并结合程序进行分析。

三、实验内容:(1)线性表的基本操作。

第一步:定义线性表的存储结构。

第二步:编写线性表的具体函数定义。

第三步:使用定义的线性表并调用线性表的一些操作,实现具体运算。

1)初始化线性表,2)创建一个线性表。

3)在线性表中查找指定的元素。

4)在线性表中插入指定的元素。

5)在线性表中删除指定的元素。

6)输出线性表。

四、源代码:// sqList.h#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define ML 10typedef int ElemT ype;typedef struct sqList{ElemT ype list[ML];int size;int MAXSIZE;//sqList.c#include <stdio.h>#include <stdlib.h>//#include <alloc.h>//#include "sqList.h"sqList *Init_List(sqList *L,int ms){L=(sqList *)malloc(ms*sizeof(sqList));if(!L){printf("Memory allocation failure!\n");exit(OVERFLOW);}elseL->size=0;L->MAXSIZE=ms;return L;}void Disp_List(sqList *L){int i;for(i=0;i<L->size;i++)printf("%d\t",L->list[i]);printf("\n");}int LocateElem_List(sqList *L,ElemT ype x){int i=0;for(i=0;i<=L->size;i++)if(L->list[i]==x)return i;if(i>L->size) return -1;}int Insert_List(sqList *L,ElemT ype x,int mark){int i=1;if(L->size>=L->MAXSIZE)return -1;if(mark>0){for(i=L->size+1;i>=mark;i--)L->list[i+1]=L->list[i];L->list[i]=x;else if(mark<0)L->list[L->size]=x;L->size++;return FALSE;}int Delete_List1(sqList *L,int item){int i,j;for(i=0;i<L->size;i++)if(item==L->list[i])break;if(i<L->size){for(j=i+1;j<L->size-1;j++)L->list[j]=L->list[j+1];L->size--;return i;}return FALSE;}int Delete_List2(sqList *L,int mark){int i,item;if(mark>0){item=L->list[mark];for(i=mark+1;i<L->size-1;i++)L->list[i]=L->list[i+1];L->size--;return i;}return FALSE;}//sqListmain.c//#include"sqList.c"void main(){int p,n;ElemT ype x=0;sqList a,*b;b=Init_List(&a,ML);printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",b->list,b->size,b->MAXSIZE); while(1)printf("\n请输入元素值,0为结束输入: ");scanf("%d",&x);if(!x)break;printf("请输入插入位置: ");scanf("%d",&p);Insert_List(b,x,p);printf("线性表为: \n");Disp_List(b);}while(1){printf("请输入查找元素值,输入0结束查找操作:");scanf("%d",&x);if(!x) break;n=LocateElem_List(b,x);if(n<0) printf("没找到\n");elseprintf("有符合条件的元素,位置为:%d\n",n+1); }while(1){printf("请输入删除元素值,输入0结束查找操作:");scanf("%d",&x);if(!x)break;n=Delete_List1(b,x);if(n<0)printf("没找到\n");else{printf("删除元素成功,线性表为: ");Disp_List(b);}}while(1){printf("请输入删除元素位置,输入0结束查找操作:"); scanf("%d",&p);if(!p) break;n=Delete_List2(b,p);if(p<0) printf("位置越界\n");else{printf("线性表为: ");Disp_List(b);}}五、测试结果:六、心得体会:通过这次写实验报告,我深切的理解了这门课的本质。

数据结构--实验报告 线性表的基本操作

数据结构--实验报告 线性表的基本操作

数据结构..实验报告线性表的基本操作数据结构实验报告线性表的基本操作1.引言本实验报告旨在介绍线性表的基本操作。

线性表是一种常见的数据结构,它是一组有限元素的有序集合,其中每个元素之间存在一个特定的顺序关系。

线性表的操作包括插入、删除、查找等,这些操作对于有效地管理和利用数据非常重要。

2.实验目的本实验的目的是通过实践理解线性表的基本操作,包括初始化、插入、删除、查找等。

通过编写相应的代码,加深对线性表的理解,并掌握相应的编程技巧。

3.实验内容3.1 初始化线性表初始化线性表是指创建一个空的线性表,为后续的操作做准备。

初始化线性表的方法有多种,如顺序表和链表等。

下面以顺序表为例进行说明。

顺序表的初始化包括定义表头指针和设置表的长度等操作。

3.2 插入元素插入元素是指将一个新的元素插入到线性表的指定位置。

插入元素有两种情况:插入到表的开头和插入到表的中间。

插入元素的操作包括移动其他元素的位置以腾出空间,并将新的元素插入到指定位置。

3.3 删除元素删除元素是指将线性表中的某个元素删除。

删除元素有两种情况:删除表的开头元素和删除表的中间元素。

删除元素的操作包括将被删除元素的前一个元素与后一个元素进行连接,断开被删除元素与表的联系。

3.4 查找元素查找元素是指在线性表中寻找指定的元素。

查找元素的方法有多种,如遍历线性表、二分查找等。

查找元素的操作包括比较目标元素与线性表中的元素进行匹配,直到找到目标元素或遍历完整个线性表。

4.实验步骤4.1 初始化线性表根据线性表的类型选择相应的初始化方法,如创建一个空的顺序表并设置表的长度。

4.2 插入元素输入要插入的元素值和插入的位置,判断插入的位置是否合法。

如果合法,移动其他元素的位置以腾出空间,将新的元素插入到指定位置。

如果不合法,输出插入位置非法的提示信息。

4.3 删除元素输入要删除的元素值,判断元素是否在线性表中。

如果在,则找到目标元素的前一个元素和后一个元素,进行连接删除操作。

数据结构--实验报告 线性表的基本操作

数据结构--实验报告 线性表的基本操作

数据结构--实验报告线性表的基本操作数据结构--实验报告线性表的基本操作一、引言本实验报告旨在通过实际操作,掌握线性表的基本操作,包括初始化、插入、删除、查找等。

线性表是最基本的数据结构之一,对于理解和应用其他数据结构具有重要的作用。

二、实验目的1·了解线性表的定义和基本特性。

2·掌握线性表的初始化操作。

3·掌握线性表的插入和删除操作。

4·掌握线性表的查找操作。

5·通过实验巩固和加深对线性表的理解。

三、线性表的基本操作1·初始化线性表线性表的初始化是将一个线性表变量设置为空表的过程。

具体步骤如下:(1)创建一个线性表的数据结构,包括表头指针和数据元素的存储空间。

(2)将表头指针指向一个空的数据元素。

2·插入元素插入元素是向线性表中指定位置插入一个元素的操作。

具体步骤如下:(1)判断线性表是否已满,如果已满则无法插入元素。

(2)判断插入位置是否合法,如果不合法则无法插入元素。

(3)将插入位置及其后面的元素都向后移动一个位置。

(4)将待插入的元素放入插入位置。

3·删除元素删除元素是从线性表中删除指定位置的元素的操作。

具体步骤如下:(1)判断线性表是否为空,如果为空则无法删除元素。

(2)判断删除位置是否合法,如果不合法则无法删除元素。

(3)将删除位置后面的元素都向前移动一个位置。

(4)删除最后一个元素。

4·查找元素查找元素是在线性表中查找指定元素值的操作。

具体步骤如下:(1)从线性表的第一个元素开始,逐个比较每个元素的值,直到找到目标元素或遍历完整个线性表。

(2)如果找到目标元素,则返回该元素的位置。

(3)如果未找到目标元素,则返回找不到的信息。

四、实验步骤1·初始化线性表(1)定义线性表的数据结构,包括表头指针和数据元素的存储空间。

(2)将表头指针指向一个空的数据元素。

2·插入元素(1)判断线性表是否已满。

数据结构--实验报告 线性表的基本操作

数据结构--实验报告 线性表的基本操作

数据结构--实验报告线性表的基本操作数据结构实验报告[引言]在本次实验中,我们将学习线性表的基本操作,包括插入、删除、查找等。

通过实践操作,加深对线性表的理解和掌握。

[实验目的]1.学习线性表的基本概念和操作。

2.熟悉线性表的插入、删除和查找等基本操作。

3.掌握线性表的实现方式及其相应的算法。

[实验内容]1.线性表的定义与表示1.1 线性表的定义1.2 线性表的顺序存储结构1.3 线性表的链式存储结构2.线性表的基本操作2.1初始化线性表2.2判断线性表是否为空2.3 插入操作2.3.1 在指定位置插入元素2.3.2 在表尾插入元素2.4 删除操作2.4.1 删除指定位置的元素2.4.2 删除指定值的元素2.5 查找操作2.5.1 按位置查找元素2.5.2 按值查找元素2.6 修改操作2.6.1修改指定位置的元素 2.6.2 修改指定值的元素2.7 清空线性表2.8 销毁线性表[实验步骤]1.初始化线性表1.1 创建一个空的线性表对象1.2 初始化线性表的容量和长度2.插入操作2.1在指定位置插入元素2.1.1 检查插入位置的合法性2.1.2 将插入位置后的元素依次后移2.1.3在指定位置插入新元素2.2 在表尾插入元素2.2.1 将表尾指针后移2.2.2 在表尾插入新元素3.删除操作3.1 删除指定位置的元素3.1.1 检查删除位置的合法性3.1.2 将删除位置后的元素依次前移3.1.3 修改线性表的长度3.2 删除指定值的元素3.2.1 查找指定值的元素位置3.2.2调用删除指定位置的元素操作4.查找操作4.1 按位置查找元素4.1.1 检查查找位置的合法性4.1.2 返回指定位置的元素4.2 按值查找元素4.2.1 从头到尾依次查找元素4.2.2 返回第一个匹配到的元素5.修改操作5.1修改指定位置的元素5.1.1 检查修改位置的合法性5.1.2修改指定位置的元素值5.2修改指定值的元素5.2.1 查找指定值的元素位置5.2.2调用修改指定位置的元素操作6.清空线性表6.1 设置线性表长度为07.销毁线性表7.1 释放线性表的内存空间[实验结果]使用线性表进行各种基本操作的测试,并记录操作的结果和运行时间。

线性表的基本操作及其应用

线性表的基本操作及其应用

线性表的基本操作及其应用一、实验目的1、帮助学生复习C++语言程序设计中的知识。

2、熟悉线性表的逻辑结构。

3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。

二、实验内容单链表的基本操作[问题描述]实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。

[基本要求](1)依次从键盘读入数据,建立带头结点的单链表;(2)输出单链表中的数据元素(3)求单链表的长度;(4)根据指定条件能够取元素和修改元素;(5)实现在指定位置插入和删除元素的功能。

三、概要设计各操作的具体函数实现:1.用尾插法建立带头结点的链表可任意输入元素(char 型),void CreatList(LinkList &L){//LinkList p;L=(LinkList)malloc(sizeof(LNode));int n=0,j=0;L->next=NULL;cout<<"请输入结点个数:";cin>>n;for(int i=n;i>0;i--){LinkList p;p=(LinkList)malloc(sizeof(LNode));cout<<"请输入一个节点数据:"<<endl;cin>>p->data;p->next=L->next;L->next=p;Length++;//每增加一个数据,Length加一}}2.清空链表分析链表为空时,输出为空;当链表不为空时,清空链表,并输出原来的链表已经被清空!的字样告诉操作者,链表已为空了int ClearList(LinkList &L){if(L->next==NULL){cout<<"链表为空!";}else {{LinkList p,q;p=L->next;while(p){q=p;p=p->next;-- Length;delete q;}}cout<<"原来的链表已经被清空!!"<<endl;}return OK;}3.求链表的长度在建立链表是已经用Length着个全局变量记载建立的结点的个数,即链表的长度用cout<<Length就可以得到链表的长度:int Listlength(LinkList L){cout<<"链表长度为:"<<Length<<endl;return Length;}4.链表元素的展示用函数DisplayList(LinkList L)实现,首先判断链表是否为空,当链表不为空时,在从第一个元素找到并输出,主要步骤为:LinkList p;p=L->next;cout<<"链表中的数据依次为:"<<'\t';while(p){cout<<p->data<<" ";p=p->next;}5.从链表中查找元素用函数GetElem_L(LinkList L)来实现该功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验1:线性表的基本操作及其应用班级:RB软工移151学号:************姓名:***实验一线性表一、实验目的1、帮助读者复习C++语言程序设计中的知识。

2、熟悉线性表的逻辑结构。

3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。

二、实验内容本次实验提供4个题目,每个题目都标有难度系数,*越多难度越大,题目一、二是必做题。

题目三、题目四选作。

三、实验准备知识1、请简述线性表的基本特性和线性表的几种基本操作的机制①答:线性表的基本特性是:对线性表中某个元素ai来说,称其前面的元素ai-1为ai的直接前驱,称其后前面的元素ai+1为ai的直接后继。

显然,线性表中每个元素最多有一个直接前驱和一个直接后继。

②答:线性表的几种基本操作的机制有六个:(1)初始化线性表initial_List(L)——建立线性表的初始结构,即建空表。

这也是各种结构都可能要用的运算。

(2)求表长度List_length(L)——即求表中的元素个数。

(3)按序号取元素get_element(L,i)——取出表中序号为i的元素。

(4)按值查询List_locate(L,x)——取出指定值为x的元素,若存在该元素,则返回其地址;否则,返回一个能指示其不存在的地址值或标记。

(5)插入元素List_insert(L,i,x)——在表L的第i个位置上插入值为x的元素。

显然,若表中的元素个数为n,则插入序号i应满足1<=i<=n+1。

(6)删除元素List_delete(L,i)——删除表L中序号为i的元素,显然,待删除元素的序号应满足1<=i<=n。

2、掌握线性表的逻辑结构。

3、掌握线性表的链式存储结构。

4、熟练掌握线性表的插入、删除等操作。

四、实验内容题目一:顺序表的基本操作[问题描述]实现顺序表的建立、求长度,取元素、修改元素、插入、删除等基本操作。

[基本要求](1)依次从键盘读入数据,建立顺序表;(2)输出顺序表中的数据元素;(3)求顺序表的长度;(4)根据指定条件能够取元素和修改元素;(5)实现在指定位置插入和删除元素的功能。

[测试数据]由学生任意指定。

运行结果如下图:1)实现删除功能2)实现取元素功能3)实现查找功能4)实现插入功能[源代码](加注释)#include<stdio.h>#include <iostream.h>#include <malloc.h>#define maxlen 100 //设元素个数最大为100 typedef struct //声明一个结构体来存放顺序表{ int data[maxlen]; //定义存储表中元素的数组int listlen; //定义表长度分量}seqlist;void get_element(seqlist *L,int I,int *x); //按序号求元素运算的子函数int List_locate(seqlist L,int I,int x); //声明按值查询元素的子函数bool List_insert(seqlist *L,int I,int x); //声明插入元素的子函数bool List_delete(seqlist *L,int I); //声明删除元素的子函数void main(){ seqlist *L; //表结构变量的定义L=(seqlist *)malloc(sizeof(seqlist)); //为表分配空间int i; //定义整型变量for(i=1;i<=20;i++) //赋值给表中的元素{ L->data[i-1]=i; //填入删除内容}L->listlen=20; //定义表的长度cout<<"删除前的顺序表:\n";for(i=1;i<=L->listlen;i++) //输出表中元素{ cout<<L->data[i-1]<<" ";}cout<<"\n输入要删除的纪录号:";cin>>i; //用户输入删除的记录if(List_delete(L,i)) //用删除元素的子函数{ cout<<"\n删除成功!删除后的顺序表为:\n";for(i=1;i<=L->listlen;i++) //向前批量移动元素{ cout<<L->data[i-1]<<" ";}}}bool List_delete(seqlist *L,int i) //删除元素的子函数{ int j; // 定义一个整型变量if(L->listlen<=0) //空表不能删除元素{ cout<<"下溢出错!";return false; //返回false }if(i>L->listlen||i<=0) //删除元素不存在{ cout<<"删除位置错!";return false; //返回false }else{ for(j=i;j<=L->listlen-1;j++) //向前批量移动元素{ L->data[j-1]=L->data[j];;}L->listlen--; //表长度减1return true; //返回true }}void main(){ seqlist *L; //表结构变量的定义L=(seqlist *)malloc(sizeof(seqlist)); //为表分配空间int i; //定义整型变量for(i=1;i<=20;i++) //赋值给表中的元素{ L->data[i-1]=i;}L->listlen=20; //定义表的长度cout<<"取元素前的顺序表:\n";for(i=1;i<=L->listlen;i++) //输出表中元素{ cout<<L->data[i-1]<<" ";}cout<<"\n输入要取元素的序号:";cin>>i; //用户输入要取元素的记录if(get_element( L, i)) //用取元素的子函数{ cout<<"\n取元素成功!取元素后的顺序表为:\n";for(i=1;i<=L->listlen;i++){ cout<<L->data[i-1]<<" ";}}}bool get_element(seqlist *L,int i) //取元素的子函数{ int x;if(i<1||i>L->listlen) //要取的元素不存在{ cout<<"下溢出错!"; //空表无元素return false;}else{ x=L->data[i-1]; //取出相应元素cout<<"\n所取的元素\n";cout<<x<<" "; //输出对应元素return true;}}void main(){ seqlist *L; //表结构变量的定义L=(seqlist *)malloc(sizeof(seqlist)); //为表分配空间int i,x,a; //定义三个整型变量for(i=1;i<=20;i++) //赋值给表中的元素{ L->data[i-1]=i;}L->listlen=20; //定义表的长度cout<<"查找元素前的顺序表:\n";for(i=1;i<=L->listlen;i++) //输出表中元素{ cout<<L->data[i-1]<<" ";}cout<<"\n输入要查元素:";cin>>x; //用户输入查找的记录a=List_locate(L,x);if(a!=0){ cout<<"\n查元素成功!查元素后的顺序表为:\n";cout<<a<<" ";cout<<"\n取元素后的顺序表为:\n"; //取元素后的顺序for(i=1;i<=L->listlen;i++) //输出表中元素{ cout<<L->data[i-1]<<" ";}}else cout<<"\n查无此元素成功!:\n";}int List_locate(seqlist *L,int x) //按值查询元素的子函数{ int i; //定义一个整型变量for(i=0;i<L->listlen;i++) //依次比较各个元素 { if(L->data[i]==x) return(i+1); //找到元素X的位置返回其序号 }return(0); //未找到则返回0值}void main(){ seqlist *L; //表结构变量的定义L=(seqlist *)malloc(sizeof(seqlist)); //为表分配空间int i,x,a; //定义三个整型变量for(i=1;i<=20;i++) //赋值给表中的元素{ L->data[i-1]=i; //填入插入内容}L->listlen=20; //定义表的长度cout<<"插入元素前的顺序表:\n";for(i=1;i<=L->listlen;i++) //输出表中元素{ cout<<L->data[i-1]<<" ";}cout<<"\n输入要插的元素:";cin>>x; //用户输入插入的记录cout<<"\n输入要插的位置:";cin>>i; //用户输入插入的位置a=List_insert(L,i,x);if(a==1){ cout<<"\n插入元素成功!:\n";cout<<"\n插入元素后的顺序表为:\n";for(i=1;i<=L->listlen;i++) //输出表中元素{ cout<<L->data[i-1]<<" ";}}else if(a==0)cout<<"溢出,不能插入!"; //溢出,不能插入else cout<<"插入位置错!";}int List_insert(seqlist *L,int i,int x) //插入元素的子函数{ int j; //定义一个整型变量if(L->listlen==maxlen){ cout<<"溢出,不能插入!"; //溢出,不能插入return 0; //返回}else if(i<1||i>L->listlen+1){ cout<<"插入位置错!"; //插入范围错return -1 ;} //返回并结束else{for(j=L->listlen-1;j>=i-1;j--) //往后移动元素L->data[j+1]= L->data[j];L->data[i-1]=x; //填入插入的元素L->listlen++; //修改表长度return 1; //返回}}题目二:单链表的基本操作[问题描述]实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。

相关文档
最新文档