数据结构实验报告:顺序表基本操作的实现
1、实验目的
(1)领会线性表顺序存储结构的特点。
(2)掌握线性表顺序存储结构的常见算法。
2、实验具体要求
(1)建立顺序表存储数据序列(10,20,30,40,50,60,70,80,90,100)
(2)输出顺序表中的所有元素;
(3)输出顺序表中的最大值和最小值;
(4)键盘输入一个数x,如x在表中返回其在表中的位序,不在返回相应提示信息。
(5)删除顺序表中的第8个元素,并输出顺序表中的所有元素;
(6)在第5个元素后面插入新元素55,并输出顺序表中的所有元素;
(7)输出顺序表的长度。
3、实验设计思路(编程语言、模块划分及函数功能描述等)
(1)输入线性表的元素个数,然后构建一个新的线性表;
(2)连续用insertlist函数往性表里插入元素,将其元素输出;
(3)利用冒泡法查找最大值和最小值;
(4)while循环查找第一个值域与x相等的元素的逻辑序号;
(5)删除:将第i个以后的元素均向前移动一个位置,并从元素a(i+1)开始移动起。
(6)插入:第i个元素及以后的元素均后移一个位置,并且从最后一个元素a(i+1)开始移动起。
4、实验源程序、程序调试结果
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define LEN 10
typedef struct
{ int data[LEN];
int length;
}Sqlist; //定义Sqlist这个表结构
void showlist(Sqlist *L) //显示表内数据
{ int i;
if(L->length==0) //表内为空
printf("该表为空");
else
{ printf("表内数据:\n");
for(i=0;i<L->length;i++)
printf("%d\n",L->data[i]);
printf("表内有%d个数据\n",L->length);
}
}
void initlist(Sqlist *&L)//初始化表结构,定义结构体指针L
{
L=(Sqlist*)malloc(sizeof(Sqlist));
L->length=0; //初始化节点数量
}
bool insertlist(Sqlist *&L,int i,int e)//插入数据
{
int j;
if(i>L->length+1||i<1)//隔空插入或逻辑序号错误
return false;
i--; //逻辑序号转换为物理序号
for(j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
return true;
}
void Fmaxmin(Sqlist *L)//查找最大最小值
{
int max=L->data[0],min=L->data[0];
for(int i=0;i<L->length;i++)
{
if(L->data[i]>max)
max=L->data[i];
if(L->data[i]<min)
min=L->data[i];
}
printf("表中最大值为%d\n",max);
printf("表中最小值为%d\n",min);
}
int selectlist(Sqlist *L,int e)//按e(元素)查找下标返回下标(int)
{
int i=0;
while(i<L->length&&L->data[i]!=e)
i++;
if(i>=L->length)
return 0;
else
return i+1;
}
bool deletelist(Sqlist *&L,int i)//删除元素操作
{
int j;
if(i<1||i>L->length)
return false;
i--;
for(j=i;j<L->length-1;j++)
L->data[j]=L->data[j+1];
L->length--;
printf("表内有%d个数据\n",L->length);
return true;
}
int main()
{
Sqlist *L;
int a[LEN]={10,20,30,40,50,60,70,80,90,100};
int e,i=0,flag=0;
initlist(L);
for(i=0;i<10;i++)
insertlist(L,i+1,a[i]);
//1
showlist(L);
//2
Fmaxmin(L);
//3
printf("请输入你要查找的数据\n");
scanf("%d",&e);
if(selectlist(L,e)==0)
printf("表中没有你要查找的数据\n");
else
printf("你要查找的数据是表中第%d个元素\n",selectlist(L,e));
//4
printf("您要删除第几个元素?\n");
scanf("%d",&i);
deletelist(L,i);
showlist(L);
//5
printf("您要插入在哪里插入新元素?\n");
scanf("%d",&i);
printf("您要插入什么元素?\n");
scanf("%d",&e);
insertlist(L,i+1,e);
showlist(L);
//6
printf("%d",L->length);
return 0;
}
5、程序调试过程中遇到的问题及解决办法
(1)错误:重复定义了i——在同一个作用域内进行了两次或两次以上的赋值,编译器无法判断使用哪个。
解决措施:将int i注释掉。
(2)报错:expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
解决方法:通过百度我发现是因为我的源代码文件后缀.c,因为“&”引用符号是C++中的内容,改为.cpp后不再报错。
6、实验收获与体会
这次实验让我真正的明白了SqList &L的使用:在函数调用中引用变量一定要初始化才可以使用。"&"在这里是引用符号,作用是:需要把子函数中的运算结果传回主函数。
这次实验加深了我对刚学过的数据结构的基础知识理解,更深刻的理解了线性结构的特点。
对于线性表在顺序存储结构上实现基本操作的算法如查找,插入,删除等也理解得更透彻了。
数据结构实验报告:顺序表基本操作的实现相关推荐
- java数据结构实验一顺序表,java数据结构实验代码之升序顺序表
java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...
- 数据结构实验报告线性表的应用
线性表的应用 实验要求 创建一个班级学生信息表,包含"学号.姓名.性别.成绩"等信息.具有如下功能:(1) 根据指定学生个数,逐个输入学生信息:(2) 逐个显示学生表中所有学生的相 ...
- 数据结构算法实现-顺序表基本操作
数据结构算法实现 实现了高一凡的<<数据结构>>,书中的代码是基于VC6++ c++语言实现的,网上也可以找到TC版的c语言实现的源代码,TC版的源代码平台是 Turbo C ...
- 数据结构 稀疏矩阵三元组顺序表 基本操作
[数据结构]稀疏矩阵 三元组顺序表存储 基本操作 1.稀疏矩阵定义: 假设在 mn 的矩阵中,又t个元素不为零.δ = t/mn ,称δ为矩阵的稀疏因子,通常定义δ小于等于0.05时称为稀疏矩阵. 2 ...
- 数据结构-实验1 顺序表
[问题描述] 设计一个顺序表操作演示程序. [基本要求] 顺序表操作演示程序提供一个用户界面,可演示的基本功能包括: (1)初始化顺序表: (2)输入并建立顺序表: (3)输出顺序表中的元素: (4) ...
- 北京理工大学计算机实验四报告表,北京理工大学数据结构实验报告实验四
北京理工大学数据结构实验报告实验四 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <数据结构与算法设计>实验报告--实 ...
- 数据结构线性表的逻辑结构(三)顺序表基本操作的实现
一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二. ...
- 数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o
目录 前言 一.顺序表的定义 二.顺序表的初始化 三.顺序表的建立 四.顺序表的输出 五.顺序表的逆序输出 六.顺序表的插入操作 七.顺序表的删除操作 八.顺序表的按位和按值查找 基本操作的完整代码 ...
- 数据结构实验报告,二叉树的基本操作(C语言)
数据结构实验报告,二叉树的基本操作(C语言) 作者:命运之光 专栏:数据结构 目录 数据结构实验报告,二叉树的基本操作(C语言) 实验六 二叉树的基本操作 一.需求分析 二.概要设计 三.详细设计 四 ...
- C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文
数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00 浏览量:763 手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...
最新文章
- FBI很气愤:黑了CIA的熊孩子又回来了
- 一文详析微信和淘宝扫码登录背后的实现原理!
- linux系统重启网络delaying initialization错误的解决方法
- “百度智能云”下,群星璀璨,照亮百度世界2020
- Linux文本检索命令grep笔记
- Pytorch基础(五)nn模块及optimizer
- C#中跨线程操作控件
- 通讯录c语言链表实验报告,通讯录管理系统数据结构C语言版链表实现实验报告(31页)-原创力文档...
- 安卓开发---环境搭建(2022最新)
- Chapter 2 大规模MIMO系统信息论基础及信道容量分析
- 公众号获取access_token失败
- 应届毕业生找工作很迷茫?4招教你快速破局,应届生必看!
- 程序员能写的最佳代码,就是无码!
- 攻防世界mfw--详细笔记
- The color “baseBlac in values has no declaration in the base values folder this can lead to crash
- agv机器人无人仓系统-开源agv控制系统opentcs
- IE8——focus函数不好用
- myeclipse17创建Web、Maven项目
- MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标
- 大屏显示之动态词云组件