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的使用:在函数调用中引用变量一定要初始化才可以使用。"&"在这里是引用符号,作用是:需要把子函数中的运算结果传回主函数。

这次实验加深了我对刚学过的数据结构的基础知识理解,更深刻的理解了线性结构的特点。

对于线性表在顺序存储结构上实现基本操作的算法如查找,插入,删除等也理解得更透彻了。

数据结构实验报告:顺序表基本操作的实现相关推荐

  1. java数据结构实验一顺序表,java数据结构实验代码之升序顺序表

    java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...

  2. 数据结构实验报告线性表的应用

    线性表的应用 实验要求 创建一个班级学生信息表,包含"学号.姓名.性别.成绩"等信息.具有如下功能:(1) 根据指定学生个数,逐个输入学生信息:(2) 逐个显示学生表中所有学生的相 ...

  3. 数据结构算法实现-顺序表基本操作

    数据结构算法实现 实现了高一凡的<<数据结构>>,书中的代码是基于VC6++ c++语言实现的,网上也可以找到TC版的c语言实现的源代码,TC版的源代码平台是 Turbo C ...

  4. 数据结构 稀疏矩阵三元组顺序表 基本操作

    [数据结构]稀疏矩阵 三元组顺序表存储 基本操作 1.稀疏矩阵定义: 假设在 mn 的矩阵中,又t个元素不为零.δ = t/mn ,称δ为矩阵的稀疏因子,通常定义δ小于等于0.05时称为稀疏矩阵. 2 ...

  5. 数据结构-实验1 顺序表

    [问题描述] 设计一个顺序表操作演示程序. [基本要求] 顺序表操作演示程序提供一个用户界面,可演示的基本功能包括: (1)初始化顺序表: (2)输入并建立顺序表: (3)输出顺序表中的元素: (4) ...

  6. 北京理工大学计算机实验四报告表,北京理工大学数据结构实验报告实验四

    北京理工大学数据结构实验报告实验四 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <数据结构与算法设计>实验报告--实 ...

  7. 数据结构线性表的逻辑结构(三)顺序表基本操作的实现

    一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二.  ...

  8. 数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o

    目录 前言 一.顺序表的定义 二.顺序表的初始化 三.顺序表的建立 四.顺序表的输出 五.顺序表的逆序输出 六.顺序表的插入操作 七.顺序表的删除操作 八.顺序表的按位和按值查找 基本操作的完整代码 ...

  9. 数据结构实验报告,二叉树的基本操作(C语言)

    数据结构实验报告,二叉树的基本操作(C语言) 作者:命运之光 专栏:数据结构 目录 数据结构实验报告,二叉树的基本操作(C语言) 实验六 二叉树的基本操作 一.需求分析 二.概要设计 三.详细设计 四 ...

  10. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

最新文章

  1. FBI很气愤:黑了CIA的熊孩子又回来了
  2. 一文详析微信和淘宝扫码登录背后的实现原理!
  3. linux系统重启网络delaying initialization错误的解决方法
  4. “百度智能云”下,群星璀璨,照亮百度世界2020
  5. Linux文本检索命令grep笔记
  6. Pytorch基础(五)nn模块及optimizer
  7. C#中跨线程操作控件
  8. 通讯录c语言链表实验报告,通讯录管理系统数据结构C语言版链表实现实验报告(31页)-原创力文档...
  9. 安卓开发---环境搭建(2022最新)
  10. Chapter 2 大规模MIMO系统信息论基础及信道容量分析
  11. 公众号获取access_token失败
  12. 应届毕业生找工作很迷茫?4招教你快速破局,应届生必看!
  13. 程序员能写的最佳代码,就是无码!
  14. 攻防世界mfw--详细笔记
  15. The color “baseBlac in values has no declaration in the base values folder this can lead to crash
  16. agv机器人无人仓系统-开源agv控制系统opentcs
  17. IE8——focus函数不好用
  18. myeclipse17创建Web、Maven项目
  19. MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标
  20. 大屏显示之动态词云组件

热门文章

  1. 魔域来袭H5游戏源码
  2. 大数据结合人工智能,助力智慧城市建设
  3. 亚马逊平板刷机Linux系统,亚马逊平板刷机步骤盘点【图解】
  4. Power Query For Excel数据处理利器
  5. Java面向对象编程,绘制思维导图(全面详细整理)
  6. 如何将3DMAX参数重置为默认值?
  7. STM32 USB接口 一键下载电路详解与过程分析
  8. esp8266教程:定时器之PWM
  9. 暗黑主题(皮肤)资源 (实用)
  10. 博士毕业最高201万!华为顶级薪酬招“天才少年”