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

article/2025/9/14 21:46:09

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

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

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


http://chatgpt.dhexx.cn/article/T3NiQs5R.shtml

相关文章

顺序表基本操作的实现

实验一 顺序表基本操作的实现 一、实验学时&#xff1a; 2学时 二、实验目的 实现顺序表的基本操作 三、实验内容 顺序表的建立、取指定元素、返回指定元素位置顺序表中插入新元素、删除指定元素操作的实现 四、主要仪器设备及耗材 硬件&#xff1a;计算机一台软件&…

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

目录 前言一、顺序表的相关知识点二、顺序表的定义三、顺序表的初始化四、顺序表的建立五、顺序表的输出六、顺序表的逆序输出七、顺序表的插入操作八、顺序表的删除操作九、顺序表的按位和按值查找基本操作的完整代码十*、顺序表删除的常用操作十一*、顺序表的常用合并操作 前…

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

线性表的顺序存储顺序表的线性存储示意图C语言定义线性表的顺序存储结构顺序表的基本操作顺序表的基础操作完整代码 线性表的顺序存储 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素&#xff0c;使得线性表在逻辑结构上相邻的元素存储在连续的物…

顺序表的基本操作(C语言)

1.要求 编程实现顺序表的基本操作&#xff0c;并设计一个菜单调用。 ①建立&#xff08;初始化&#xff09;、遍历、取值、查找、插入、删除 ②判空、求元素个数、前驱、后继、置为空表、销毁 2.分析 我们需要去定义一个结构体&#xff08;以下代码的结构体名为SqList),其…

C语言实现顺序表基本操作

1.顺序表初始化 2.顺序表创建 3.求顺序表的长度 4.判断顺序表是否为空 5.向顺序表中插入元素 6.删除顺序表中元素 7.将顺序表翻转 8.将顺序表降序排序 #include<stdio.h> #define MAXSIZE 100//定义顺序表的最大存储个数 typedef struct SqList {int *base;int l…

顺序表基本操作

文章目录 1. 顺序表插入元素2. 顺序表删除元素3. 顺序表查找元素4. 顺序表更改元素 1. 顺序表插入元素 向顺序表中插入数据元素&#xff0c;根据插入位置的不同&#xff0c;可分为以下 3 种情况&#xff1a; 插入到顺序表的表头&#xff1b;在表的中间位置插入元素&#xff1…

顺序表的基本操作

一、实验目的&#xff1a; 1、复习C语言程序设计中的知识。 2、掌握线性表的顺序存储结构的表示和实现方法。 3、掌握顺序表基本操作的算法实现。 二、实验内容&#xff1a; 1&#xff0e;建立顺序表。 2&#xff0e;在顺序表上实现插入、删除和查找等操作。 三、实验要求…

数据结构-顺序表基本操作的实现(含全部代码)

今天起开始编写数据结构中的各种数据结构及其算法的实现。 主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。 今天是线性表中的顺序表的实现&#xff0c;主要实现函数如下&#xff0c;读者有需要可以评论&#xff0c;我可以适当加几个。 CreateList(SqList &L…

PTA题目:顺序表基本操作

实现顺序表的基本操作&#xff0c;如初始化、插入、删除、输出等。 注意&#xff1a;顺序表中可有重复元素值。 要求&#xff1a;写出三个基本操作函数ListInsert&#xff0c;ListDelete&#xff0c;ListDeleteElem。 顺序表结构与操作函数接口定义&#xff1a; typedef char…

顺序表的操作,你真的学会了吗?

&#x1f30d;新人小白的博客 ⌛️希望大家多多关注 &#x1f383;以后会经常更新哒~&#x1f648; ⭐️个人主页&#xff1a; 收藏加关注&#xff0c;永远不迷路~ ⭐️ 顺序表的操作 前言一、目的二、步骤1.定义存储表示2. 定义操作函数3.采用菜单样式让操作更加方便清楚。4. …

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

目录 1.顺序表的定义 2.define和typedef 3.以下所有用到函数的声明 4.建表&#xff0c;为表开放空间 5.建表&#xff0c;并且输入表内的值 6.在L中第i个位置之前查人新的数据元素e&#xff0c;L的长度加1 7.删除L的第i个数据元素&#xff0c;并用e返回其值&#xff0c;L的…

顺序表基本操作算法——基础代码(C语言)

创建一个顺序表&#xff08;数据元素个数为5&#xff09;&#xff0c; 输出顺序表中的所有数据元素 查找第3个位置上的元素 查找元素15是否在顺序表中&#xff0c;如果在&#xff0c;请输出该元素在顺序表中的位置 在顺序表中的第1个位置插入数据0 删除刚刚插入的元素 输出顺序…

顺序表的十个基本操作(全)

目录 一、初始化顺序表 二、插入 三、删除 3.1 按位删除 3.2 按数删除 四、查找 4.1 按位查找 4.2 按数查找 五、修改 5.1 按位修改 5.2 按数修改 六、逆置 七、排序 八、按序插入 九、按序合并 十、最小值 完整代码 一、初始化顺序表 初始化并一个顺序表&am…

数据结构—顺序表基本操作的实现(C语言)

前言 本文介绍线性表顺序存储时基本操作的实现&#xff0c;包括顺序表的结构定义、初始化、插入、删除、销毁、显示、清空、判空、求长度、查找&#xff0c;以及线性表的合并。 主要参考&#xff1a;严蔚敏“数据结构及应用算法教程”教材 代码如下 #include <stdio.h>…

顺序表的基本操作(超详细)

1.顺序表的定义 使用结构体来构造一个顺序表。 typedef struct {int length;//当前顺序表长度int Maxsize;//顺序表最大长度int* data;//定义顺序表中元素类型的数组指针 }SqList;2.顺序表的初始化 顺序表的初始化是使用动态分配数组空间方式构造一个空的线性表。 #include&…

多组比较的非参数检验——K-W检验

作者&#xff1a;丁点helper 来源&#xff1a;丁点帮你 前面我们已经讲完两组比较的非参数检验&#xff0c;类似t检验与方差分析&#xff0c;当比较的数据超过两组时&#xff0c;我们就需要换一个方法了。 非参数K-W检验&#xff0c;相比前文讲解的Mann-Whitney 检验就是这样…

推断统计:参数估计和假设检验

目录 1、总体、个体、样本和样本容量    1&#xff09;总体、个体、样本和样本容量的概念    2&#xff09;本文章使用的相关python库   2、推断统计的概念    1&#xff09;推断统计的概念    2&#xff09;为什么要进行推断统计&#xff1f;   3、参数估计(点…

非参数检验之符号检验、Wilcoxon符号秩检验、游程检验

目录 一、符号检验 例2.1下面是世界上71个大城市的花费指数(包括租金)按递增次序排列如下(这里上海是44位&#xff0c;其指数为63.5&#xff09;&#xff1a; R代码&#xff1a; 二、Wilcoxon符号秩检验 例2.3下面是10个欧洲城镇每人每年平均消费的酒类相当于纯酒精数&…

SPSS非参数检验

系列文章目录 SPSS描述统计 SPSS均值检验 SPSS方差分析 文章目录 系列文章目录前言1 非参数检验提出的背景与特点1.1 背景1.2 特点 2 SPSS分析-非参数检验菜单中的相关功能2.1 卡方检验2.1.1 概述2.1.2 操作流程2.1.3 实例操作 2.2 二项分布检验2.2.1 概述2.2.2 操作流程2.2.3…

入门必学 | R语言参数检验之t检验与方差分析

T检验与方差分析 背景介绍R语言实操过程--t test单样本t检验两个独立样本t检验配对t检验 R语言实操过程--anova单因素方差分析多重比较 双因素方差分析 完整代码 之前与大家分享了数据的独立性、正态性、方差齐性检验。如果还不清楚&#xff0c;大家可以通过这篇推文来学习和理…