数据结构 顺序表的建立和运算

发布 2021-06-02 08:15:28 阅读 6342

实验报告。

课程: 数据结构班级:

实验序号: 1姓名:

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

一、实验目的和要求

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

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

二、实验环境。

windows7 ,vc

三、实验内容及实施。

实验内容。1、建立一个顺序表,输入n个元素并输出;

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

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

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

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

*6、将线性表中的元素就地逆序(只允许用一个暂存单元);

程序流程图。

程序】定义顺序表:

#define maxsize 1024

typedef int elemtype; /线性表中存放整型元素 */

typedef struct

elemtype vec[maxsize];

int len顺序表的长度 */

}sequenlist;

源程序:#include

#include ""

#include <>

#define elemtype int //宏定义。

#define list_int_size 10 //改为1,改用listinsert增加空间。

using namespace std;

/定义一个顺序表。

struct sqlist

elemtype * elem;

int length;

int listsize;

l=;int initlist_sq(sqlist &l,int n=list_int_size)

*)malloc(n *sizeof(elemtype));

return 0;

int listinsert_sq(sqlist &l,int i,elemtype e)

int *p,*q;

p=最后一个位置。

q=要插入元素的位置。

for(;p>q;p--)

p=*(p-1);

q=e;return 1;

/删除顺序表中的元素。

int listdelete_sq(sqlist &l,int i,elemtype *e=0)

int *p;

p=定位到要删除的元素位置。

if(e)e=*p;//返回要删除元素的值。

for(;p<=

p=*(p+1);

return 1;

/要输入元素的线性表l,要输入的元素个数n

int listinput_sq(sqlist &l,int n)

int *p=

for(int i=0;i{

cin>>*p++)

return 1;

/顺序输出顺序表中的元素。

int listoutput_sq(sqlist &l)

int *p;

p=cout<<"顺序表中的元素为:";

for(int i=0;i<

cout<<*p++)

cout

/查找最大元素。

int listmax_sq(sqlist &l,elemtype *e)

int max;

int *p;

p=max=*p;

for(int i=0;i<

if(max<*p)

max=*p;

p++;最后溢出了会怎样?

e=max;

return 1;

/升序排序。

int listsort_sq(sqlist &l)

int tmp;

int i,j;

int *p;

p=for(i=0;i<

for(j=0;j<

if(*(p+j)>*p+j+1))

tmp=*(p+j);

(p+j)=*p+j+1);

(p+j+1)=tmp;

return 1;

/逆序(不使用暂存空间)

int listrevorder1_sq(sqlist &l)

int *p;

p=for(int i=0;i<

*(p+i)=(p+

(p+(p+i)=(p+

return 1;

/主函数。void main()

int opt;

/ sqlist l;

/ 初始化。

int i,res,e,n;

while(1)

cout《请输入您要进行的操作的编号

**性表的第i个元素前插入一个正整数x"

将线性表中的元素就地逆序(不使用暂存单元)">opt;

switch (opt)

case 1:

cout《请输入要输入元素的个数>n;

initlist_sq(l,n);/建立顺序表。

cout《请输入线性表元素

listoutput_sq(l);/输出顺序表中的元素。

break;

case 2:

listmax_sq(l,&e);

cout<<"最大元素为:"

case 3:

cout<<"请分别输入要插入的元素和要插入元素的位置"

cin>>e;

cout<<"位置:";

cin>>i;

listinsert_sq(l,i,e);

listoutput_sq(l);/输出顺序表中的元素。

break;

case 4:

cout<<"请输入要删除的元素的位置">i;//位置。

listdelete_sq(l,i,&res);

cout<<"删除的元素为:"

break;

case 5:

listsort_sq(l);/升序排序。

listoutput_sq(l);/输出顺序表中的元素。

break;

case 6:

listrevorder1_sq(l);/不使用暂存空间逆序。

listoutput_sq(l);/输出顺序表中的元素。

break;

四、实验结果 (程序的执行结果)

五、实验讨论。

对于main函数如何将调用函数连接起来一直不太熟悉,通过上网查找资料和自己的不断摸索,终于解决这个问题,想要把程序编好必须多练多实践。

数据结构顺序表

define success 1 define failure 0 define maxsize 100 typedef int elemtype elemtype类型根据实际情况而定,这里假设为int typedefstruct elemtype data maxsize 数组,存储数据元素 in...

数据结构中顺序表的基本操作

头文件。include include include 函数返回状态 define ok 1 define error 0 define true 1 define false 0 define infeasible 1 define overflow 2 运用动态分配的顺序存储结构。define ...

数据结构实验 矩阵的运算

目录。实验目的 2 功能描述 2 输入描述 2 输出描述 2 程序分析 2 基本操作 2 主要算法分析 2 矩阵的构建 2 矩阵的加法 3 矩阵的减法 3 矩阵的乘法 4 算法的选择 5 程序运行过程 5 软件启动界面 5 加法运算 6 乘法运算 7 实验总结 8 用户手册 8 运行平台 8 系统要...