顺序表的查找、插入与删除

顺序表的查找、插入与删除
顺序表的查找、插入与删除

1. 实验项目的目的和任务

顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求:

1) 从键盘输入10个整数,产生顺序表,并输入结点值。

2) 从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。

3) 从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。

4) 从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。

2. 上机实验内容

1. 定义一个整型数组。用于存放顺序表的数据元素

2. 设计一个函数,完成顺序表的建立。

从键盘输入10个整数,产生顺序表,并输入结点值。

3. 设计一个函数,完成顺序表的查找。

从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。

4. 设计一个函数,完成顺序表的插入。

从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。

5. 设计一个函数,完成顺序表的删除。

从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。

6. 设计一个函数,用于顺序显示当前线性表中的所以元素。

3. 主要实验方法

程序主框架已经设计好。见SqList.C文件。请按要求设计各个函数,并完成正确调用。

下面是SqList.C里的内容

#include

#include

#define N 10 //顺序表的最大容量

int length=0; //顺序表的当前元素个数

void main()

{

int List[N];

char ch,exit='N';

do

{

system("CLS");

printf("\t\t********************************************\n");

printf("\t\t* 1.创建一个顺序表 .........(1) *\n");

printf("\t\t* 2.在顺序表中查找元表.........(2) *\n");

printf("\t\t* 3.在顺序表中插入元表.........(3) *\n");

printf("\t\t* 4.在顺序表中删除元表.........(4) *\n"); printf("\t\t* 5.退出 .........(5) *\n"); printf("\t\t********************************************\n");

printf("\n请选择操作代码:");

ch=getchar();

getchar();

switch(ch)

{

case '1':

//请在这里调用创建顺序表的函数,并删除printf函数

printf("创建一个顺序表\n");

break;

case '2':

//请在这里调用查找元素的函数,并删除printf函数

printf("在顺序表中查找元表\n");

break;

case '3':

//请在这里调用插入元素的函数,并删除printf函数

printf("在顺序表中插入元表\n");

break;

case '4':

//请在这里调用删除元素的函数,并删除printf函数

printf("在顺序表中删除元表\n");

break;

case '5':

printf("\n您是否真的要退出程序(Y/N):");

exit=getchar();getchar();

break;

default:

printf("\n无效输入,请重新选择...:");

}

}while(exit!='y'&&exit!='Y');

}

顺序表的创建插入与删除

#include #define maxsize 1024 //定义maxsize是1024 #define inplen 10 //定义inplen是10 typedefint datatype; typedefstruct { datatype data[maxsize]; int last; }sequenlist; //创建一个顺序表并且将之初始化 sequenlist *CreatInit(void) { sequenlist *l; l = new sequenlist( ); //使用动态分配sequenlist空间大小l->last=-1; //空表 return l; } //打印出顺序表 void println(sequenlist *head) { sequenlist *p = head; inti = 0; printf(" Now the squenlist is:"); for (i = 0; i<= p->last; i++) { printf("%d ", p->data[i]); } } //计算出顺序表的长度 int Length(sequenlist *head) { return head->last+1; } //给顺序表结点data[i]赋值 sequenlist *Setvalue(sequenlist *head) { inti; sequenlist *p = head; for (i = 0; idata[i]); //键盘上输入10 个结点的值} p->last = i-1;

顺序表的查找、插入与删除实验报告

《数据结构》实验报告一 学院:班级: 学号:姓名: 日期:程序名 一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个整数,产生顺序表,并输入结点值。 2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找 不到,则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出顺序表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 二、源程序及注释: #include #include /*顺序表的定义:*/ #include #define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/ typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct { DataType data[ListSize]; /*向量data用于存放表结点*/ int length; /*当前的表长度*/ }SeqList; void main() { SeqList L; int i,x; int n=10; /*欲建立的顺序表长度*/ L.length=0; void CreateList(SeqList *L,int n); void PrintList(SeqList L,int n); int LocateList(SeqList L,DataType x); void InsertList(SeqList *L,DataType x,int i); void DeleteList(SeqList *L,int i);

01顺序结构的线性表插入删除查找

//* * * * * * * * * * * * * * * * * * * * * * * //PROGRAM NAME :顺序结构的线性表 * //CONTENT :插入,删除,查找 * //* * * * * * * * * * * * * * * * * * * * * * * #include #include #include #define MAX 30 //定义线性表的最大长度 enum BOOL{False,True}; //定义BOOL型 typedef struct{ char elem[MAX]; //线性表 int last; //last指示当前线性表的长度 }sqlisttp; void initial(sqlisttp &); //初始化线性表 BOOL insert(sqlisttp &,int,char); //在线性表中插入元素 BOOL del(sqlisttp&,int,char &); //在线性表中删除元素 int locate(sqlisttp,char); //在线性表中定位元素 void print(sqlisttp); //显示线性表中所有元素 void main() {sqlisttp S; //S为一线性表 int loc,flag=1; char j,ch; BOOL temp; textbackground(3); //设置屏幕颜色 textcolor(15); clrscr(); //---------------------------程序解说-------------------------- printf("本程序用来实现顺序结构的线性表。\n"); printf("可以实现查找、插入、删除等操作。\n"); //------------------------------------------------------------- initial(S); //初始化线性表 while(flag) { printf("请选择:\n"); printf("1.显示所有元素\n"); printf("2.插入一个元素\n"); printf("3.删除一个元素\n"); printf("4.查找一个元素\n"); printf("5.退出程序 \n"); scanf(" %c",&j); switch(j) {case '1':print(S); break; //显示所有元素 case '2':{printf("请输入要插入的元素(一个字符)和插入位置:\n"); printf("格式:字符,位置;例如:a,2\n"); scanf(" %c,%d",&ch,&loc); //输入要插入的元素和插入的位置

数据结构-顺序表的查找插入与删除

一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个整数,产生顺序表,并输入结点值。 2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找 不到,则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出顺序表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 二、源程序及注释: #include #include /*顺序表的定义:*/ #include #define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/ typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct { DataType data[ListSize]; /*向量data用于存放表结点*/ int length; /*当前的表长度*/ }SeqList; void main() { SeqList L; int i,x; int n=10; /*欲建立的顺序表长度*/ L.length=0; void CreateList(SeqList *L,int n); void PrintList(SeqList L,int n); int LocateList(SeqList L,DataType x); void InsertList(SeqList *L,DataType x,int i); void DeleteList(SeqList *L,int i); CreateList(&L,n); /*建立顺序表*/ PrintList(L,n); /*打印顺序表*/ printf("输入要查找的值:"); scanf("%d",&x); i=LocateList(L,x); /*顺序表查找*/ printf("输入要插入的位置:"); scanf("%d",&i); printf("输入要插入的元素:"); scanf("%d",&x);

线性表的创建插入和删除的操作

实验容:线性表的创建、插入删除等 #include"stdio.h" #include"stdlib.h" int*inistl(int m,int *n) /*建立线性表函数*/ {int*v=NULL; v=malloc(m*sizeof(int*)); /*创建链表,并把首地址赋给指针V*/ n=0; return v; } void insl(int*v,int m,int*n,int i,int b)/*在链表指定位置插入元素b*/ { int j; if(*n>=m) /*检查是否链表溢出*/ {printf("the stack is overflow\n"); return; } if(i>*n-1) i=*n+1; /*若插入点大于元素位置则在表的结束插入*/ if(i<1) i=1; /*空表在首部插入元素*/ for(j=*n;j>=i;j--) /*首位之间任意位置的插入*/ v[j]=v[j-1]; v[i-1]=b; *n=*n+1; /*插入后元素统计指针加1*/ } void desl(int*v,int m,int*n,int i) /*线性表删除函数*/ {int j; if(*n==0) /*判断线性表是否为空*/ {printf("the stack is underflow\n "); return; } if((i<1)||(i>*n)) /*删除点在首部以前和尾部以后特殊情况排除*/ {printf("not this element in the list!"); return; } for (j=i;j<=*n-1;j++) /*在允许位置做删除操作*/ v[j-1]=v[j]; *n=*n-1; /*元素统计指针减1*/ return; }) void input(int*v,int n) /*空表起始输入元素函数*/ {int i; for(i=0;i

实验一 数据结构顺序表的插入和删

实验一顺序表的操作 1.实验题目:顺序表的操作 2.实验目的和要求: 1)了解顺序表的基本概念、顺序表结构的定义及在顺序表上的基本操作(插入、删除、查找以及线性表合并)。 2)通过在Turbo C(WinTc,或visual stdio6)实现以上操作的C语言代码。 3)提前了解实验相关的知识(尤其是C语言)。 3.实验内容:(二选一) 1)顺序表的插入算法,删除算法,顺序表的合并算法 2)与线性表应用相关的实例(自己选择详尽实例) 4.部分参考实验代码: ⑴顺序表结构的定义: #include #define MAXLEN 255 typedef int ElemType; typedef struct { ElemType elem[MAXLEN]; int length; }sqList; ⑵顺序表前插(在第i号元素前插入一个新的元素) int ListInsert(sqList *la,int i,int x)

{ int j; if(i<0||i>la-> length +1) {printf(“\n the value of i is wrong!”); return 0; } if(la-> length +1>=MAXLEN) { printf(“\n overflow!”); return 0; } . for(j=la-> length;j>=i;j--) la->list[j+1]=la->list[j]; la->list[i]=x; la-> length++; return 1; } ⑶顺序表删除 int ListDelete(sqList *la,int i) { if(i<0||i>la-> length) { printf(“\n the position is wrong!\n”); return 0; }

数据结构-线性表输入-输出-插入-删除-查找

数据结构-线性表输入-输出-插入-删除-查找

创建一个线性表实现输入,输出,插入,删除,定位。 (注意:不论在调用哪个函数前,都要先使L.elem=a,就是使指针elem回到数组a的首地址。) #include #include #include #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int ElemType; //接下来ElemType代表的就是int typedef int Status; //Status也代表int int i,*p,*q; //p,q都是指针类型 ElemType e; typedef struct { ElemType *elem; //定义成指针类型//存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位) }SqList; //***********************构建空的线性表*************************// Status InitList_Sq(SqList &L) //构建一个空的线性表L { L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); //存储分配失败 L.length=0; //空表长度为0 L.listsize=LIST_INIT_SIZE; //初始存储容量 return OK; } //**************************线性表输入函数*********************// void input(SqList &L) //输入函数 { scanf("%d",L.elem); //要先输入一个,不然一开始就是0,无法进行循环while(*L.elem) // 加*是因为elem是指针,加之后才代表值{ L.elem++; //输入后指针后移 L.length++; //表长加1 scanf("%d",L.elem); //循环中也要再输入 } } //**************************线性表打印函数********************// void print(SqList &L) //输出函数

线性表的插入与删除的实现

线性表的插入与删除的实现 一.算法的基本概念 计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。 1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。 2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。 3.算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 4.算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求 三.数据结构的定义 1.数据的逻辑结构:反映数据元素之间的关系的数据元素集合的表示。数据的逻辑结构包括集合、线形结构、树形结构和图形结构四种。 2.数据的存储结构:数据的逻辑结构在计算机存储空间种的存放形式称为数据的存储结构。常用的存储结构有顺序、链接、索引等存储结构。 在数据结构中,没有前件的结点称为根结点;没有后件的结点成为终端结点。插入和删除是对数据结构的两种基本运算。还有查找、分类、合并、分解、复制和修改等。 五.线性结构和非线性结构 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构。 线性结构:非空数据结构满足:有且只有一个根结点;每个结点最多有一个前件,最多只有一个后件。非线性结构:如果一个数据结构不是线性结构,称之为非线性结构。 常见的线性结构:线性表、栈、队列 七.线性表的顺序存储结构 线性表的顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素。线性表的顺序存储结构具备如下两个基本特征: 1.线性表中的所有元素所占的存储空间是连续的; 2.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 即线性表逻辑上相邻、物理也相邻,则已知第一个元素首地址和每个元素所占字节数,则可求出任一个元素首地址。 假设线性表的每个元素需占用K个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系: LOC(ai+1)=LOC(ai)+K LOC(ai)=LOC(a1)+(i-1)*K ① 其中,LOC(a1)是线性表的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基地址。 因为在顺序存储结构中,每个数据元素地址可以通过公式①计算得到,所以线性表的顺序存储结构是随机存取的存储结构。 在线性表的顺序存储结构下,可以对线性表做以下运算: 插入、删除、查找、排序、分解、合并、复制、逆转

线性表的插入,删除,修改

#include"stdio.h" #include"stdlib.h" int*inistl(int m,int *n) /*建立线性表函数*/ {int*v=NULL; v=malloc(m*sizeof(int*)); /*创建链表,并把首地址赋给指针V*/ n=0; return v; } void insl(int*v,int m,int*n,int i,int b)/*在链表指定位置插入元素b*/ { int j; if(*n>=m) /*检查是否链表溢出*/ {printf("the stack is overflow\n"); return; } if(i>*n-1) i=*n+1; /*若插入点大于元素位置则在表的结束插入*/ if(i<1) i=1; /*空表在首部插入元素*/ for(j=*n;j>=i;j--) /*首位之间任意位置的插入*/ v[j]=v[j-1]; v[i-1]=b; *n=*n+1; /*插入后元素统计指针加1*/ } void desl(int*v,int m,int*n,int i) /*线性表删除函数*/ {int j; if(*n==0) /*判断线性表是否为空*/ {printf("the stack is underflow\n "); return; } if((i<1)||(i>*n)) /*删除点在首部以前和尾部以后特殊情况排除*/ {printf("not this element in the list!\n"); return; } for (j=i;j<=*n-1;j++) /*在允许位置做删除操作*/ v[j-1]=v[j]; *n=*n-1; /*元素统计指针减1*/ return; } void input(int*v,int n) /*空表起始输入元素函数*/ {int i; for(i=0;i

线性表顺序存储实现、插入、删除操作

#include #include #define list_init_size 100 #define listincrement 10 #define ok 1 #define overflow -1 #define elemtype int #define error -1 elemtype *q; elemtype *p; typedef struct{ elemtype *elem; int length; int listsize; }sqlist; int initlist_sq(sqlist &l)//线性表动态分配存储结构// { l.elem=(elemtype*)malloc(list_init_size*sizeof(elemtype)); if(!l.elem) { cout<<"the list have no space"<>m;

实验一数据结构顺序表的插入和删除

实验一顺序表的操作 1. 实验题目:顺序表的操作 2.实验目的和要求: 1)了解顺 序表的基本概念、顺序表结构的定义及在顺序表上的基本操作(插入、 删除、查找以及线性表合并 )。 2)通过在 Turbo C ( WinTc ,或 visual stdio6 )实现以上操作的 C 语言 代码。 3)提前了解实验相关的知识(尤其是 C 语 言)。 3.实验内容:(二选一) 1) 顺序表的插入算法, 删除算法, 顺序表的合并算法 2) 与线性表应用相关的实例( 自己选择具体实例) 4.部分参考实验代码: ⑴ 顺序表结构的定义: #include #define MAXLEN 255 typedef int ElemType; typedef struct { ElemType elem[MAXLEN]; int length; }sqList; ⑵ 顺序表前插(在第i 号元素前插入一个新的元素) int ListInsert(sqList *la,int i,int x) { int j; if(i<0||i>la-> length +1) { printf( “ n the value of i is wrong! ” ); return 0; } if(la-> length +1>=MAXLEN) { printf( “ n overflow! ” ); return 0; }

. for(j=la-> length;j>=i;j--) la->list[j+1]=la->list[j]; la->list[i]=x; la-> length ++; return 1; } ⑶ 顺序表删除 int ListDelete(sqList *la,int i) { if(i<0||i>la-> length ) { printf( “ return 0; n”); } for(i;i length;i++) la->list[i-1]=la->list[i]; la-> length --; return 1; } 5.附录:实验预备知识: ⑴ 复习 C 语言中数组的用法。 ⑵ 了解线性表和顺序表的概念,顺序表的定义方法; 线性表是n 个数据元素的有限序列,至于每个数据元素的具体含义,在不同的情况下各不相同。 顺序表是线性表的顺序存储表示,是用一组地址连续的存储单元依次存储线性表的数据元素。 在 C 语言中,顺序表是用数组来实现的。 ⑶ 掌握线性表在顺序存储结构上实现基本操作:查找、插入、删除和 合并的算法。 在实现这些算法的时候,要注意判断输入数据的合法性,除此之外还要要注意以下内容: 在实现查找的时候,首先要判断该顺序表是否为空,其次要判断查找后的结果(查到时输出查到的数据,未查到时给出未查到提 示)。 在实现插入的时候,首先要判断该顺序表是否为满,如为满则报错 (此时要注意:顺序表是用数组来实现的,它不能随机分配空 间);如不为满,则需判断要插入的位置是否合法(例如:如果 一个线性表的元素只有10 个,而要在第0 个元素前插入或在第 11 个元素后插入就为不合法)。其次要注意是前插还是后插,两

线性表的插入和删除

实验一线性表的基本操作 一、实验目的 掌握线性表的基本操作,插入、删除、查找,以及线性表合并等运算在顺序存储结构上的运算。 二、实验要求 1、认真阅读和掌握本实验的程序。 2、上机运行本程序。 3、保存和打印出程序的运行结果,并结合程序进行分析。 4、按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单 和运行结果 三、实验内容 线性表基本操作的实现。 算法描述:对每一个算法,要写出算法的中文描述。本实验中要求写出在第i 个结点前插入数据为x的结点、删除指定结点、创建一个线性表、打印线性表的算法描述。 四、程序清单 1、sqlist.h文件清单: #include "stdio.h" #include "malloc.h" #define null 0 #define maxsize 1024 typedef char datatype; typedef struct { datatype data[maxsize]; int last; }sequenlist; /*在第i个结点前插入元素x(note:元素从0始计数)*/ int insert(sequenlist *L, datatype x,int i) { int j; if (L->last==maxsize-1)/*如果原线性表已经满了*/ { printf("overflow"); return 0; } else if ((i<0)||(i>L->last)) /*如果输入的i值超出范围*/ { printf("error,please input the right 'i'"); return 0; } else { for(j=L->last; j>=i; j--) /*从第i个元素起,每个元素后移一位*/ L->data[j+1]=L->data[j];

数据结构线性表单链表的查找,插入,删除

实验报告 课程名称数据结构 姓名 学号 专业班级 指导教师

目录 第二章线性表的查找、插入、删除 (1) 1.1顺序表的查找 (1) 1.2顺序表的插入 (2) 1.3顺序表的删除 (4) 单链表的建立、插入、删除 (6) 2.1 单链表的建立(尾插法) (6) 2.2 单链表的插入 (8) 2.3 单链表的删除 (10) 第三章栈 (14) 3.1链栈 (14) 3.2 顺序栈 (16) 3.3队列 (18) 3.4杨辉三角 (20) 第四章串 (23) 4.1字符串的建立 (23) 4.2顺序串的插入 (25)

1.线性表的查找、插入、删除 1.1顺序表的查找 程序: #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct { ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[]中的位置(下标值),空表为-1*/ }Seqlist; int Locate(Seqlist L,ElemType e) /*在顺序表L中查找与e相等的元素,若L。elem[i]=e,则找到该元素,并返回i+1,若找不到,则返回-1*/ { int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/ while ((i<=https://www.360docs.net/doc/fd12288917.html,st)&&(L.elem[i]!=e)) /*顺序扫描表,直到找到值为e的元素,或扫描到表尾仍没找到*/ i++; if(i<=https://www.360docs.net/doc/fd12288917.html,st) return (i+1); /*若找到值为e的元素,则返回其序号*/ else return(-1); /*若没找到,则返回空序号*/ } void main() { Seqlist l; int p,q,r; int i; printf("请输入线性标的长度:"); scanf("%d",&r);

顺序表的查找、插入与删除

1. 实验项目的目的和任务 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1) 从键盘输入10个整数,产生顺序表,并输入结点值。 2) 从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。 3) 从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。 4) 从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 2. 上机实验内容 1. 定义一个整型数组。用于存放顺序表的数据元素 2. 设计一个函数,完成顺序表的建立。 从键盘输入10个整数,产生顺序表,并输入结点值。 3. 设计一个函数,完成顺序表的查找。 从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。 4. 设计一个函数,完成顺序表的插入。 从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果。 5. 设计一个函数,完成顺序表的删除。 从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 6. 设计一个函数,用于顺序显示当前线性表中的所以元素。 3. 主要实验方法 程序主框架已经设计好。见SqList.C文件。请按要求设计各个函数,并完成正确调用。 下面是SqList.C里的内容 #include #include #define N 10 //顺序表的最大容量 int length=0; //顺序表的当前元素个数 void main() { int List[N]; char ch,exit='N'; do { system("CLS"); printf("\t\t********************************************\n"); printf("\t\t* 1.创建一个顺序表 .........(1) *\n"); printf("\t\t* 2.在顺序表中查找元表.........(2) *\n"); printf("\t\t* 3.在顺序表中插入元表.........(3) *\n");

C++线性表的元素插入和删除

#include using namespace std; struct node { node(int i,char *item2):data(i),data2(item2),left(NULL),right(NULL){} int data; char *data2; node *left; //左孩子结点 node *right; //右孩子结点 void inorder(node *&root) //中序遍历,符合升序输出 { if(root!=NULL) { inorder(root->left); cout<data<<' '<data2<right); } } void insert(node *&ptr,int item,char item2[10]) //在查找树中插入元素 { if(ptr==NULL) ptr=new node(item,item2); else if(itemdata) insert(ptr->left,item,item2); else insert(ptr->right,item,item2); } node *&findy(node *&ptr,int item) //在查找树中查找肯定存在的元素,并返回其引用 { if(ptr->data==item) return ptr; else if(itemdata) findy(ptr->left,item); else findy(ptr->right,item); } void dele(node *&ptr) //删除值为item所在结点 { if(ptr->left==NULL&&ptr->right==NULL) ptr=NULL; else if(ptr->right==NULL) ptr=ptr->left;

线性表的初始化、插入元素、删除元素

线性表的建立、插入、删除程序 #include #include #include /* 常量定义 */ #define ElemType int #define Status int #define TRUE 1 #define OK 1 #define FALSE 0 #define ERROR -1 /* 线性表的单链表存储结构*/ typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; /* 操作结果:构造一个空的线性表L */ void InitList(LinkList *L) { *L = (LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */ if( !*L ) /* 存储分配失败 */ exit(OVERFLOW); (*L)->next = NULL; /* 指针域为空 */ } /* 初始条件:线性表L已存在。*/ /* 操作结果:销毁线性表L */ void DestroyList(LinkList *L) { LinkList q; while(*L) { q = (*L)->next; free(*L); *L=q; } } /* 初始条件:线性表L已存在。*/ /* 操作结果:将L重置为空表 */ void ClearList(LinkList L) /* 不改变L */ { LinkList p, q; p = L->next; /* p指向第一个结点 */ while(p) /* 没到表尾 */ { q = p->next;

线性顺序表的插入与删除(实验报告)

一、实验目的和要求 通过对顺序表的编程练习,加强对顺序表的特点、顺序存储结构及其基本运算的理解和掌握。提前了解实验相关的c语言的知识。使用C语言根据相应算法编写一个程序,实现建立线性顺序表、插入和删除等基本操作。要求仔细阅读下面的内容,编写一个C程序,上机调试通过,并观察其结果,写出实验报告书。 二、实验内容和原理 内容:建立一个容量10的顺序表,在其中插入3个元素,然后作删除运算。 原理: 在第i个元素前插入元素,从第i个元素开始到最后一个元素均向后移动一个位置,然后将新元素插入到第i个位置,将线性表的长度加1。 删除第i个元素,从第i+1个元素开始到最后一个元素均向前移动一个位置,然后将线性表的长度减1。 三、主要仪器设备 计算机一台 四、实验主程序 #include #include struct List{ int size; int n; int *head; }; void init(struct List *pl,int size) { pl->size=size; pl->n=0; pl->head=malloc(size*sizeof(int)); } void in(int i,int val,struct List *pl) { int k; if(pl->n==pl->size) { printf("list is full.\n"); return; } if(i>pl->n) i=pl->n+1; if(i<1) i=1; for(k=pl->n-1;k>=i-1;--k) pl->head[k+1]=pl->head[k]; pl->head[i-1]=val; ++pl->n; } void out(int i,struct List *pl) { int k; if(pl->n==0) { printf("list is empty.\n"); return; } if(i<1||i>pl->n) { printf("this element is not in the list.\n"); return; } for(k=i;k<=pl->n;++k) pl->head[k-1]=pl->head[k]; --pl->n;

实验一 顺序表的操作、插入与删除

实验一顺序表的操作、插入与删除 【实验目的】 (1)熟悉数据移动是顺序表的操作特点。 (2)掌握顺序表中元素的移动、插入和删除操作的特点。 【实验内容】 题1 设有一个用向量表示的线性表a[n],a[0]中不存放线性表的元素。要求写出将其中元素逆置的函数,并只允许用a[0]作附加的工作单元。 题2 写出从线性表中删除元素值为x的结点的函数。若该表中无此结点,则输出“无此结点”信息。 【实验要求】 从键盘任意输入9个整数,依次存放在数组a[10]的元素a[1]~a[9]中,逆置后输出。 在题1的基础上,从键盘输入一个整数x,从a[1]开始访问数组a,完成题2。 【实验提示】 题1 有以下两种方法: (1)将a[1]至a[n-1]前移1位,再将a[n-1]←a[0];接着a[1]至a[n-2]前移一位,再将a[n-2]←a[0];……。 (2)可用移动和插入,通过a[0]使元素a[1]和a[n-1]交换;再使a[2]和a[n-2]交换;如此继续至中点为止。注意如何判断中点。 思考这两种方法的时间复杂度分别是多少。 题2 首先也要找到被删除元素的位置,然后将该位置以后的数据元素全部前移一个单元。注意:当数组a中有重复的元素值且x与此值相等时,函数应能删除全部重复元素。当有多个连续的相同值需要删除时,应都能删除。 程序如下: #include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int a[100]={0},i,x,j,k; int n; //输入数组 printf("请输入数组大小n:"); scanf("%d",&n); printf("请输入%d个数:\n",n-1); for (i=1;i

线性表顺序存储结构插入-删除 (1)

线性表顺序存储结构插入,删除 (数据结构) 一、实验目的 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 3.实现顺序表的插入,删除等操作。 二、实验要求 1、用vs6.0 进行线性表程序的编写,用c语言程序开发 三、实验内容 1、定义常量,变量等 2、定义主函数main 3、定义调用函数void Initlist(Sqlist &L),void Creatlist(Sqlist &L),void Insertlist(Sqlist &L,int j,int e),void Deletelist(Sqlist &L,int j) #include #define maxsize 100 typedef int elemtype; typedef struct { elemtype elem[maxsize]; int length; }Sqlist; void Initlist(Sqlist &L) //初始化表L { L.length=0; } void Creatlist(Sqlist &L) {

int i; scanf("%d\n",&L.length); for(i=0;i=j-1;i--) L.elem[i+1]=L.elem[i]; L.elem[j-1]=e; L.length=L.length+1; } void Deletelist(Sqlist &L,int j) //删除元素 { int i; for(i=j-1;i

相关文档
最新文档