1.C语言顺序表实验报告

合集下载

顺序表基本算法实验报告讲解

顺序表基本算法实验报告讲解

C语言程序设计实践

综合题目:顺序表基本算法

班级:

姓名:

同组人员:

提交日期:

一、程序功能:

1、建立一个顺序表。

2、对建立好的顺序表进行一些基本的操作,如:

a。顺序表的类型定义。

b。求顺序表长操作.

c.取顺序表元素操作。

d。按值查找操作.

e.显示元素操作。

f。插入操作.

g。删除操作。

h.显示元素操作.

二、算法设计思想:

用一组存储单元来存放线性表中的数据元素,把顺序表中的所有元素按照其逻辑结构顺序依次储存到从计算机储存器中指定储存位置开始的一块连续的储存空间。线性表中的第一个位置储存在数组的起始位置(下标为0)在定义一个顺序表时,除了定义一个数组来储存线性表中的所有元素,还需要定义一个整型变量来储存线性表的实际长度。然后通过对数组元素中的元素进行操作,对顺序表进行基本算法。

三、算法运行结果

1、显示整个功能

2、设置顺序表的长度:

3、求出并返回顺序表的长度:

4、在顺序表中取出某个位置的元素并返回其值:

5、显示顺序表中的元素:

6、在顺序表的某个位置插入元素:

7、删除顺序表中的某个元素

8、输出顺序表

9、将顺序表逆序输出

10、退出对顺序表的操作:

四、收获及体会

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

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

一、实验目的和要求

通过对顺序表的编程练习,加强对顺序表的特点、顺序存储结构及其基本运算的理解和掌握。提前了解实验相关的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];

顺序表的建立及基本操作

顺序表的建立及基本操作

师大学

实验报告

课程:数据结构班级:2016级通信2班实验序号: 1 姓名:明达

学号: 0 实验日期:9.17 题目: 顺序表的建立和运算

一、实验目的和要求

(1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。

(2)掌握线性表的顺序存储结构的定义及基本运算

二、实验环境

Windows10,Visual Studio 2017

三、实验容及实施

实验容

1、建立一个顺序表,输入n个元素并输出;

2、查找线性表中的最大元素并输出;

3、在线性表的第i个元素前插入一个正整数x;

4、删除线性表中的第j个元素;

5、将线性表中的元素按升序排列;

【程序流程图】

【程序】

#include

#include

using namespace std;

#define MAXSIZE 100

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef struct { //定义顺序表结构

int data[MAXSIZE]; //存储空间的基地址;

int length; //当前表长

}SqList;

int InitList(SqList &L) //初始化顺序表

{

L.length = 0; //当前长度为0

return OK;

}

void ShowList(SqList &L) //显示顺序表

{

cout << "您构建的顺序表为:" << endl; //提示int i;

for (i = 0; i < L.length; i++)

{

cout << L.data[i] << " ";

顺序表的基本操作--实验报告

顺序表的基本操作--实验报告

实验报告

附:源程序:

#include<stdio.h>

#define Maxsize 100

#define error 0

#define ok 1

typedef struct

{

int elem[Maxsize];

int last;

}SeqList;

int InsList(SeqList *L,int a,int i); int Locate(SeqList L,int e);

int Del(SeqList *L,int i);

void main()

{

int i,e,a;

int list1,list2;

SeqList L;

st=0;

for(i=0;i<100;i++)

{

printf("请输入顺序表元素\n");

scanf("%d",&L.elem[i]);

if(L.elem[i]==-1)

break;

st++;

}

if(L.elem[st]==-1)

st--;

printf("要插入的元素,位置为\n"); scanf("%d,%d",&a,&i);

list1=InsList(&L,a,i);

if(list1)

{

printf("插入后的顺序表为:\n");

for(i=0;i<=st;i++)

printf("%d",L.elem[i]);

printf("\n");

}

else

printf("插入失败!");

printf("要查找的元素为\n");

scanf("%d",&e);

list2=Locate(L,e);

if(!list2)

printf("该元素不存在\n");

顺序表的操作实验报告

顺序表的操作实验报告

顺序表的操作实验报告

顺序表的操作实验报告

一、引言

顺序表是一种常见的数据结构,它在计算机科学中被广泛应用。本实验旨在通

过实际操作顺序表,探索其基本操作和性能。

二、实验目的

1. 理解顺序表的基本原理和数据结构;

2. 掌握顺序表的插入、删除、查找等操作;

3. 分析顺序表操作的时间复杂度。

三、实验过程

1. 初始化顺序表:首先,我们创建一个空的顺序表,并设定其初始长度为10。

2. 插入元素:在顺序表中插入若干个元素,观察插入操作的效果。我们可以通

过在表尾插入元素,或者在表中间插入元素来测试插入操作的性能。

3. 删除元素:从顺序表中删除指定位置的元素,并观察删除操作的效果。我们

可以选择删除表尾元素或者表中间元素来测试删除操作的性能。

4. 查找元素:在顺序表中查找指定元素,并返回其位置。我们可以选择查找表

头元素、表尾元素或者表中间元素来测试查找操作的性能。

5. 扩容操作:当顺序表的长度不足以容纳更多元素时,我们需要进行扩容操作。在实验中,我们可以在插入元素时观察到扩容操作的效果。

四、实验结果与分析

1. 初始化顺序表:成功创建了一个长度为10的空顺序表。

2. 插入元素:通过在表尾插入10个元素,我们观察到插入操作的时间复杂度为

O(1)。然而,当我们在表中间插入元素时,需要将插入位置之后的所有元素后移,时间复杂度为O(n)。

3. 删除元素:从表尾删除元素的时间复杂度为O(1),而从表中间删除元素需要

将删除位置之后的所有元素前移,时间复杂度为O(n)。

4. 查找元素:在顺序表中查找元素的时间复杂度为O(n),因为需要逐个比较每

数据结构实验1线性表(顺序表)

数据结构实验1线性表(顺序表)
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=DELETE\n");
break;
case 'P':
case 'p':
display_sq(&L1);
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=DELETE\n");
{
int i;
i=0;
do
{
}
while(++i<L->length);
printf("\n**********%d deleted**********\n",pos);
}
int main(void)
{
Sqlist L1;
ElemType temp;
char cmd;
int i=0;
initlist_sq(&L1);
(2)下面是一个不太完整的的源程序,目的为学生提供一个示范,供学生参考。
线性表的顺序存储结构,顺序表类。本程序的特点是,数据元素的类型不再是简单类型(int,char,float),而是更加接近使实用的比较复杂的结构体类型。在数据元素输入输出时,情况比较复杂一些。
#include <stdio.h>

顺序表的基本操作与应用实验报告

顺序表的基本操作与应用实验报告

实验报告

课程名称数据结构实验名称顺序表基本操作与应用

姓名专业班级学号

试验日期试验地点E3-502指导老师邹汉斌成绩

一、实验目的

1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。

2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。

3.掌握对多函数程序的输入、编辑、调试和运行过程。

二、实验要求

1.预习C语言中结构体的定义与基本操作方法。

2.对顺序表的每个基本操作用单独的函数实现。

3.编写完整程序完成下面的实验内容并上机运行。

4.整理并上交实验报告。

三、实验内容:

1.编写程序实现顺序表的下列基本操作:

(1) 初始化顺序表La;(2) 将La置为空表;(3) 销毁La (4) 在La中插入一个新的元素;(5) 删除La中的某一元素;(6) 在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0 ;(7) 打印输出La中的元素值。

2.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:

(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);(5) 给定一个学生信息,插入到表中指定的位置;(6) 删除指定位置的学生记录;(7) 统计表中学生个数。

实验提示:

第2题可在第1题的基础上将数据结构的定义修改成下面形式后,程序适当修改即可。

学生信息的定义:

typedef struct {

顺序表和单链表实验报告

顺序表和单链表实验报告

数据结构实验报告

一、顺序表操作验证

1. 实验目的

⑴掌握线性表的顺序存储结构;

⑵验证顺序表及其基本操作的实现;

⑶掌握数据结构及算法的程序实现的基本方法。

2. 实验内容

⑴建立含有若干个元素的顺序表;

⑵对已建立的顺序表实现插入、删除、查找等基本操作。

3.设计与编码

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

struct LinearList

{

int *list;

int size;

int MaxSize;

};

typedef struct LinearList LIST;

void InitList(LIST *L,int ms)

{

if((L->list=(int*)malloc(ms *sizeof(int)))==NULL){ printf("内存申请错误!\n");

exit(1);

}

L->size=0;

L->MaxSize=ms;

}

int InsertList(LIST *L,int item,int rc) {

int i;

if(L->size>=L->MaxSize)

return-1;

if(rc<0)

rc=0;

if(rc>L->size)

rc=L->size;

for(i=L->size-1;i>=rc;i--)

L->list[i+1]=L->list[i];

L->list[rc]=item;

L->size++;

数据结构实验报告(C语言)顺序表__排序

数据结构实验报告(C语言)顺序表__排序
二、实验方法:(代码)
#include "stdafx.h" #include "stdio.h" #include "malloc.h" #define MAXSIZE 20 typedef struct{
int rБайду номын сангаасMAXSIZE+1]; int length;
}SqeList;
int InitList(); int CreateList(SqeList *L,int n); int PrintList(SqeList *L);
} } }
void ShellSort(SqeList *L,int n){ int i,di; //di 代表增量序列,并通过 for 循环依次计算出 di=n/2 的值 for(di=n/2;di>0;di/=2){ for(i=0;i<di;i++) ShellInsert(L,di); }
}
printf("%3d",L->r[i]); return 1; }
//直接插入排序 void InsertSort(SqeList *L){
int i,j; for(i=2;i<=L->length;i++){
L->r[0]=L->r[i]; j=i-1; while(L->r[0] < L->r[j]){

顺序表的基本操作实验报告

顺序表的基本操作实验报告

顺序表的基本操作实验报告

一、实验目的。

本实验旨在通过对顺序表的基本操作进行实验,加深对顺序表的理解,掌握顺序表的基本操作方法,提高编程能力。

二、实验内容。

1. 初始化顺序表。

2. 插入元素。

3. 删除元素。

4. 查找元素。

5. 修改元素。

6. 输出顺序表。

三、实验步骤。

1. 初始化顺序表。

在本实验中,我们使用C语言来实现顺序表的基本操作。首先,我们需要定义一个结构体来表示顺序表,结构体中包括数据元素和表长两个成员变量。然后,我们通过动态内存分配来创建一个顺序表,并初始化表长为0。

2. 插入元素。

插入元素是指向顺序表中的指定位置插入一个新的元素。在实验中,我们需要编写插入元素的函数,通过移动元素位置来实现插入操作。具体步骤包括,先判断插入位置是否合法,然后将插入位置后的元素依次向后移动一个位置,最后将新元素插入到指定位置。

3. 删除元素。

删除元素是指从顺序表中删除指定位置的元素。实验中,我们需要编写删除元素的函数,同样也是通过移动元素位置来实现删除操作。具体步骤包括,先判断删除位置是否合法,然后将删除位置后的元素依次向前移动一个位置,最后将表长减1。

4. 查找元素。

查找元素是指在顺序表中查找指定数值的元素,并返回其位置。实验中,我们需要编写查找元素的函数,通过遍历顺序表中的元素来实现查找操作。具体步骤包括,遍历顺序表中的元素,逐个比较元素的数值,找到目标元素后返回其位置。

5. 修改元素。

修改元素是指将顺序表中指定位置的元素进行修改。实验中,我们需要编写修改元素的函数,通过直接修改指定位置的元素值来实现修改操作。具体步骤包括,先判断修改位置是否合法,然后直接修改指定位置的元素值。

c语言顺序表实验报告

c语言顺序表实验报告

c语言顺序表实验报告

C语言顺序表实验报告

引言:

C语言是一种广泛应用于软件开发领域的编程语言,其灵活性和高效性备受开发者青睐。在本次实验中,我们将探索C语言中的一种数据结构——顺序表。顺序表是一种线性表的存储结构,通过数组实现,具有快速访问元素的特点。本实验将通过实际操作,深入了解顺序表的创建、插入、删除和查找等基本操作,并对其性能进行评估。

实验目的:

1. 掌握顺序表的创建和初始化方法;

2. 熟悉顺序表的插入、删除和查找等基本操作;

3. 评估顺序表在不同操作下的性能。

实验步骤:

1. 创建顺序表

在C语言中,可以通过定义一个结构体来表示顺序表,其中包含一个数组和一个记录当前元素个数的变量。通过动态内存分配,可以根据需要调整顺序表的大小。

```c

typedef struct {

int* data; // 数组指针

int length; // 当前元素个数

int capacity; // 顺序表的容量

} SeqList;

```

在主函数中,可以通过调用malloc函数为顺序表分配内存空间,并对其进行初始化。

```c

SeqList* createSeqList(int capacity) {

SeqList* list = (SeqList*)malloc(sizeof(SeqList));

list->data = (int*)malloc(capacity * sizeof(int));

list->length = 0;

list->capacity = capacity;

return list;

实验一顺序表的基本操作实验报告

实验一顺序表的基本操作实验报告

元素之后的所有数据都前移一个位置,最将线性表长减1。

3.顺序表查找操作的基本步骤:要在顺序表中查找一个给定值的数据元素

则可以采用顺序查找的方法,从表中第 1 个数据元素开始依次将值与给定值进行比较,若相等则返回该数据元素在顺序表中的位置,否则返回0 值。

线性表的动态分配顺序存储结构—C语言实现

#define MaxSize 50//存储空间的分配量

Typedef char ElemType;

Typedef struct{

ElemType data[MaxSize];

int length; //表长度(表中有多少个元素)

}SqList;

动态创建一个空顺序表的算法:

void InitList(SqList *&L) //初始化线性表

{

L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间

L->length=0; //置空线性表长度为0

}

线性表的插入:

status Sqlist_insert(Sqlist &L,int i,Elemtype x)

/*在顺序表L中第i个元素前插入新元素x*/

{ if (i<1||i>L.length+1) return ERROR; /*插入位置不正确则出错*/

if (L.length>=MAXLEN)return OVERFLOW;

/*顺序表L中已放满元素,再做插入操作则溢出*/

for(j=L.length-1;j>=i-1;j--)

L.elem[j+1]=L.elem[j]; /*将第i个元素及后续元素位置向后移一位*/

线性表的顺序表示及实现实验报告

线性表的顺序表示及实现实验报告
4、输入一个位置值,用算法2-5将该位置的元素删除,然后用PrintList输出表中所有元素。
实验学时:2学时
实验程序
#include "stdio.h"
#include "conio.h"
#define LISTSIZE 100
typedef int DataType;
typedef struct{
scanf("%d %d",&a,&b);
if(!ListInsert(&fibo,a,b))
{
printf("yun xing cuo wu");
return 0;
}
PrintList(fibo);
printf("qing shu ruyaoshan chu yuan su de wei zhi:\n");
4、在掌握顺序表基本操作的基础上,能够用顺序表解决简单问题。
实验内容:
1、定义一个顺序表,并输入10个整数,作为顺序表中的元素。然后编写一个函数PrintList输出表中所有元素。
2、用算法2-2统计顺序表中的元素数。
3、输入一个位置值和一个元素值,用算法2-4将新元素插入指定位置,然后输出顺序表中所有元素,检查插入是否正确。
{
fibo->length=0;

顺序表实现约瑟夫环的问题,C语言

顺序表实现约瑟夫环的问题,C语言

顺序表实现约瑟夫环的问题,C语言

计算机科学与工程学院

《算法与数据结构》试验报告[一] 专业班级 10级计算机工程02 试验地点

计算机大楼计工教研室学生学号 1005080222 指导教师蔡琼学生姓名肖宇博试验时间 2012-2-29

试验项目算法与数据结构

试验类别基础性() 设计性() 综合性(?) 其它( )

(1)掌握用VC++上机调试线性表的基本方法; 试(2)掌握顺序表的存储结构以及基本运算的实现。验

成绩评定表

类别评分标准分值得分合计

积极出勤、遵守纪律

上机表现 30分

主动完成设计任务

程序代码规范、功能正确

程序与报告 70分

报告详实完整、体现收获

备注:

评阅教师:

日期: 年月日

计算机科学与工程学院

试验内容

一、实验目的和要求

1、实验目的:

(1)掌握用VC++上机调试线性表的基本方法;

(2)掌握顺序表的存储结构以及基本运算的实现。

2、实验内容

约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺

时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针

方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的

下一个人开始重新从1报数,报到m时停止并且报m的人出列。如

此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,

对任意给定的m和n,求出出列编号序列。

3、实验要求:用顺序表实现。

二、设计分析

根据实验要求,采用顺序表来完成本次实验。

实验中定义了两个顺序表,一个用来存储n个人的序号,另一个用来存储n个人的出队顺序及序号。

程序中充分考虑了如果出队的元素大于队列的元素个数时应该有的情况,如果出现这样的错误就提示~否则继续出队~

顺序表的基本操作实验报告

顺序表的基本操作实验报告

顺序表的基本操作实验报告

顺序表的基本操作实验报告

引言:

顺序表是一种常见的数据结构,它以连续的存储空间来存储数据元素,具有随机访问的特点。在本次实验中,我们将通过实践来学习顺序表的基本操作,包括插入、删除、查找等,以加深对顺序表的理解和运用。

实验目的:

1. 掌握顺序表的插入操作;

2. 掌握顺序表的删除操作;

3. 掌握顺序表的查找操作;

4. 熟悉顺序表的基本操作的时间复杂度。

实验材料和方法:

1. 实验材料:计算机、编程环境;

2. 实验方法:使用编程语言实现顺序表的基本操作,并进行测试。

实验过程:

1. 插入操作:

在顺序表中插入一个元素,需要将插入位置之后的元素依次后移,并将新元素插入到指定位置。实现代码如下:

```python

def insert_element(seq_list, index, value):

seq_list.append(None) # 在顺序表末尾添加一个空位

for i in range(len(seq_list)-1, index, -1):

seq_list[i] = seq_list[i-1]

seq_list[index] = value

```

通过测试,我们可以验证插入操作的正确性和时间复杂度。

2. 删除操作:

顺序表的删除操作需要将删除位置之后的元素依次前移,并将最后一个元素删除。实现代码如下:

```python

def delete_element(seq_list, index):

for i in range(index, len(seq_list)-1):

seq_list[i] = seq_list[i+1]

顺序表的基本操作(5篇)

顺序表的基本操作(5篇)

顺序表的基本操作(5篇)

第一篇:顺序表的基本操作

*********************************** 实验题目:顺序表的基本操作

班级:

姓名:学号:专业:实验完成的时间:

*********************************

一、实验目的

(1)(2)(3)(4)掌握顺序表的基本运算,熟悉对顺序表的一些基本操作和具体函数的定义。掌握顺序表的存储结构及其基本操作。

熟悉c语言程序的基本结构,掌握函数定义、调用等功能。

熟悉c语言环境的使用及程序的输入、编辑、调试和运行的全过程。

二、实验要求

(1)熟练掌握线性表的存储结构及其基本操作。

(2)理解所给出的算法,掌握顺序表在实际中的应用。

(3)将上机程序调试通过,并能独立完成一至两个拓展题目。

三、实验内容

实现顺序表上的插入、删除等操作。调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果。加深对有关算法的理解。

(1)主要内容:

#define MAXSIZE 100 /*宏定义*/ //#define OVERFLOW-2 #include “stdio.h” /*包含输入输出文件*/

typedef int data;typedef struct /*定义顺序表的结构*/ {data vec[MAXSIZE];/*顺序表数据成员所占据的存储空间*/ int last;/*顺序表中最后一个元素在数组中的下标(或向量中的位置)从0开始*/ }sequenlist;int insert(L,i,x)/*在顺序表的第i个元素之前插入一个新

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

实验报告要求

一、实验目的

二、实验内容

三、程序流程图

四、实验结果(要求检测所有情况的正确性,写出测试条件及相应的测试结果)

五、完成思考题

实验一顺序表的基本操作(2学时)

一、实验目的

了解顺序表的逻辑特征,掌握顺序表的描述方法、特点及有关的概念,掌握顺序表上的插入和删除等基本操作算法。

二、实验内容

在顺序表List []中,实现顺序表的基本操作,包括:初始化顺序表,在表中插入元素、删除元素。

基本要求:

(1)顺序表的元素个数可随意设定;

(2)可连续测试任意多个元素的插入、删除,(插

入、删除位置及要插入元素数值均从键盘输入);

(3)任一操作结束后将顺序表中的内容输出;

(4)可由用户选择退出程序。

三、实验要点及说明

顺序表又称为线性表的顺序存储结构,它是用一组地址连续的存储单元依次存放线性表的各个元素。

可按如下格式定义顺序表:

#define MAXLEN 50 /* 定义顺序表最大元素个数50 */

typedef struct{

datatype List[MAXLEN];/* 定义顺序表List */

int Num; /* 定义顺序表表长*/

}Seqlist;

模块划分:(1)initiq( )函数:初始化顺序表

(2)insertq( )函数:实现插入功能

(3)deleteq( )函数:实现删除功能

(4)print( )函数:实现输出功能

四、参考源程序

#include

#define MAXLEN 50

typedef int datatype;

typedef struct{

datatype List[MAXLEN];

int Num;

}Seqlist;

void initiq(Seqlist *la );

int insertq(Seqlist *la,int n);

int deleteq(Seqlist *la,int n);

int print(Seqlist *la);

void main()

{ Seqlist la;

int s,n; /* s 选择输入,n 插入或删除数据的个数*/

printf("请输入你的选择: 1---initiate 2---insert 3---delete 4---print 5---exit\nyour choice =");

scanf("%d",&s);

while(s!=5)

{ if(s==1)

{ initiq( &la );

printf("完成初始化!\n"); }

else if(s==2)

{ printf("请输入待插入的数据个数:");

scanf("%d",&n);

insertq(&la,n);

print(&la); }

else if(s==3)

{ printf("请输入待删除的数据个数:");

scanf("%d",&n);

deleteq(&la,n);

print(&la); }

else if(s==4)

{ print(&la); }

else

printf("你的选择是错误的!\n ");

printf("请输入你的选择: 1---initiate 2---insert 3---delete 4---print 5---exit\nyour choice =");

scanf("%d",&s); } }

/*初始化*/

void initiq(Seqlist *la )

{ la-> Num=0; }

/*插入*/

int insertq(Seqlist *la,int n)

{ int i,j; /* i 插入位置,j 顺序表下标*/

datatype x; /* x 插入数据*/

while(n)

{ if (la->Num>=MAXLEN-1)

{ printf ("\n 表满,不能插入!插入未完成,还有%d个数据未插入\n",n);

return 0; }

printf("请输入插入的位置和数据:");

scanf("%d%d",&i,&x);

if (i<0||i>la->Num)

{ printf ("\n 插入位置不合理!\n"); }

else

{ if (i== la->Num)

la->List[i]=x;

else

{ for ( j=la->Num; j>i; j--)

la->List[j]=la->List[j-1];

la->List[i]=x; }

la->Num++;

n--; } }

printf("插入完成\n");

return 1; }

/*删除*/

int deleteq(Seqlist *la,int n)

{ int i,j; /* i 删除位置,j 顺序表下标*/

while(n)

{ if (la->Num<=0)

{ printf ("\n 表空,不能删除!\n");

return 0; }

printf("请输入删除的位置:");

scanf("%d",&i);

if (i<0||i>=la->Num)

{ printf ("\n 删除位置错误!\n"); }

else

{ for ( j=i+1; jNum; j++)

la->List[j-1]=la->List[j];

la->Num--;

n--; } }

printf("删除完成!\n");

return 1; }

/*显示输出*/

int print (Seqlist *la)

{ int m;

if (la->Num<=0)

{ printf("顺序表为空!\n");

return 0; }

else

{ printf("当前的顺序表为:\n");

for(m=0;mNum;m++)

printf("List[%d]=%d ",m,la->List[m]);

printf("\n表长为%d\n",la->Num);

return 1; } }

五、思考题

1.设顺序表L中的数据元素按递增排列,编写一个算法,将数据元素x插入到顺序表L的适当位置上,以保持顺序表的有序性。

相关文档
最新文档