好文档 - 专业文书写作范文服务资料分享网站

顺序表的建立及基本操作

天下 分享 时间: 加入收藏 我要投稿 点赞

精品文档

山东师范大学

实 验 报 告

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

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

一、实验目的和要求

(1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握线性表的顺序存储结构的定义及基本运算

二、实验环境

Windows10,Visual Studio 2017

三、实验内容及实施

实验内容

1、建立一个顺序表,输入n个元素并输出; 2、查找线性表中的最大元素并输出;

3、在线性表的第i个元素前插入一个正整数x; 4、删除线性表中的第j个元素; 5、将线性表中的元素按升序排列;

【程序流程图】

显示顺序表 查找最大元素 插入一个正整数 可修改 建立一个顺序表。 1、输出顺序表; 2、查找线性表中的最大元素并输出; 3、在线性表的第i个元素前插入一个正整数x; 4、删除线性表中的第j个元素;5、排序 删除第j个元素 按升序排序 精品文档

【程序】

#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) //初始化顺序表 { }

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

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

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

可修改

精品文档

}

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

cout << L.data[i] << \

} //依次输出顺序表 cout << endl;

void FindMax(SqList &L) //找最大值 { }

int InsertList(SqList &L) //插入新数字 {

int x, e;

cout << \请问您要在第__个数字前插入新数字?\ //提示 cout << \该组数据的最大值为:\ int m = L.data[0]; int i;

for (i = 0; i < L.length; i++) //依次比较两个数的大小,取大者赋给m { }

cout << m << endl; //输出最大值

if (m < L.data[i]) { }

m = L.data[i];

可修改

精品文档

}

cin >> x; //输入要插入的位置 if (x<1 || x>L.length) {

cout << \该值错!\ return ERROR;

} //位置错误提示 if (L.length == MAXSIZE) {

cout << \该顺序表空间已满,不能再添加数值!\ return OVERFLOW;

} //存储空间已满提示

cout << \您要插入的数字为:\ cin >> e; //输入要插入的数字 for (int j = L.length - 1; j >= x - 1; j--)

L.data[j + 1] = L.data[j]; //从要插入的位置起,后面数据依次向后移动

L.data[x - 1] = e; //插入新数字 L.length++; //表长+1

cout << \插入新数字之后的顺序表为:\ //提示 ShowList(L); //输出新表 return OK;

int DeleteElem(SqList &L) //删除某个元素 {

int x;

可修改

精品文档

}

cout << \请问您要删除第__个元素?\ //提示 cin >> x; //输入要删除第几个数字 if (x<1 || x>L.length) {

cout << \该值错!\ return ERROR;

} //错误提示

for (int j = x - 1; j < L.length - 1; j++)

L.data[j] = L.data[j + 1]; //从该位置起,以后数字依次向前移动

L.length--; //表长-1

cout << \删除数字之后的顺序表为:\ //提示 ShowList(L); //输出新表 return OK;

void UpRankList(SqList &L) //升序排列顺序表 {

for (i = 0; i < L.length - 1 - j; i++) //每趟冒泡比较两个数字,共比较 表长-趟数 次 {

if (L.data[i] > L.data[i + 1]) //将两者较大者移到后边 {

int i, j, temp;

for (j = 0; j

可修改

顺序表的建立及基本操作

精品文档山东师范大学实验报告课程:数据结构班级:2016级通信2班实验序号:1姓名:韩明达<
推荐度:
点击下载文档文档为doc格式
861ir9noue5a66i6tmib553973044s010cd
领取福利

微信扫码领取福利

微信扫码分享