顺序表以及单链表

目录

1顺序表(规范)

2单链表(规范)

3总结


1顺序表(规范)

#include<iostream>

using namespace std;

#define MAXSIZE 100

#define ok -1

#define error -2

typedef int Status;

typedef int ElemType;

typedef struct

{

ElemType *elem;

int length;

}Sqlist;

Status InitList(Sqlist &L);

void chushi(Sqlist &L,int x);

void shuchu(Sqlist L);

Status GetElem(Sqlist L,int i,ElemType &e);

Status ListInsert(Sqlist &L,int i,ElemType e);

Status Delete(Sqlist &L,int i);

Status Sort(Sqlist &L);

void SequenceSort(Sqlist &L,ElemType x);

int main()

{

Sqlist L;

int x,i,j;

Status m;

ElemType e;

x=InitList(L);

if(x==error) cout<<"初始化失败"<<endl;

else        cout<<"初始化成功"<<endl;

cout<<"请决定输入元素的个数";

cin>>x;

chushi(L,x);

cout<<endl<<"请输入所取的位置"<<endl;

cin>>i;

x==GetElem(L,i,e);

if(x==error) cout<<"取值操作失败"<<endl;

else        cout<<"取值成功,第"<<i<<"个位置的元素为"<<e<<endl;

cout<<"请输入要插入的个数";

cin>>x;

for(j=1;j<=x;j++)

{

cout<<endl<<"请输入要插入的位置及其元素";

cin>>i>>e;

m=ListInsert(L,i,e);

if(m==error)

{

cout<<"插入失败";break;

}

shuchu(L);

}

cout<<endl<<"请输入要删除的个数";

cin>>x;

for(j=1;j<=x;j++)

{

cout<<"请输入要删除的位置";

cin>>i;

m=Delete(L,i);

if(m==error)

{

cout<<"删除失败";

}

}

m=Sort(L);

if(m==error) cout<<"排序失败";

cout<<endl<<"请决定向有序表中插入几个数值:";

cin>>j;

for(i=1;i<=j;i++)

{

cout<<endl<<"请输入第"<<i<<"个要插入的元素";

cin>>x;

SequenceSort(L,x);

}

return 0;

}

Status InitList(Sqlist &L)//初始化开辟空间

{

L.elem=new ElemType[MAXSIZE];

if(!L.elem) return error;

L.length=0;

return ok;

}

void chushi(Sqlist &L,int x)//初始化赋值

{

ElemType m;

for(int i=0;i<x;i++)

{

cout<<"请对第"<<i+1<<"个位置赋值";

cin>>m;

L.elem[i]=m;

L.length++;

}

}

Status GetElem(Sqlist L,int i,ElemType &e)//根据位置进行取数据的取值操作

{

if(i<1||i>L.length) return error;

e=L.elem[i-1];

return ok;

}

void shuchu(Sqlist L)//输出操作

{

cout<<"顺序表为:";

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

{

cout<<L.elem[i]<<"  ";

}

}

Status ListInsert(Sqlist &L,int i,ElemType e)//插入

{

if(i<1||i>L.length+1) return error;

if(L.length==MAXSIZE) return error;

for(int j=L.length-1;j>=i-1;j--)

L.elem[j+1]=L.elem[j];

L.elem[i-1]=e;

++L.length;

return ok;

}

Status Delete(Sqlist &L,int i)//删除

{

if(i<1||i>L.length+1) return error;

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

L.elem[j-1]=L.elem[j];

L.length--;

shuchu(L);

return ok;

}

Status Sort(Sqlist &L)

{

int t;

int i,k,j;

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

{

k=0;

for(j=0;j<L.length-i-1;j++)

{

if(L.elem[j]>=L.elem[j+1])

{

t=L.elem[j];

L.elem[j]=L.elem[j+1];

L.elem[j+1]=t;

k=1;

}

}

if(k==0) break;

}

cout<<endl<<"按照升序排序为:"<<endl;

shuchu(L);

return ok;

}

void SequenceSort(Sqlist &L,ElemType x)

{

int y=2;

ListInsert(L,y,x);

Sort(L);

}

2单链表(规范)

#include<iostream>

using namespace std;

#define ok -1

#define error -2

typedef int Status;

typedef int ElemType;

typedef struct LNode

{

ElemType data;

struct LNode *next;

}LNode,*LinkList;

Status InitList(LinkList &L);

Status fuzhi(LinkList &L,int m);

void shuchu(LinkList L);

Status ListInsert(LinkList &L,int m,ElemType y);

Status Delete(LinkList &L,int n);//删除

void Sort(LinkList &L);

Status Length(LinkList L);

void SequenceSort(LinkList &L,ElemType x);

int main()

{

LinkList L;

int x,m,n;

ElemType y;

x=InitList(L);

if(x==error) cout<<"初始化失败";

else         cout<<"初始化成功"<<endl;

cout<<"请决定输入几个元素";

cin>>m;

x=fuzhi(L,m);

if(x==error) cout<<"赋值失败";

shuchu(L);

cout<<"请决定插入元素的数量:";

cin>>x;

for(int i=1;i<=x;i++)

{

cout<<"请决定插入位置及其元素";

cin>>m>>y;

ListInsert(L,m,y);

shuchu(L);

}

cout<<endl<<"请输入要删除的个数";

cin>>x;

for(int j=1;j<=x;j++)

{

cout<<"请输入要删除的位置";

cin>>n;

m=Delete(L,n);

if(m==error)

{

cout<<"删除失败";break;

}

shuchu(L);

}

Sort(L);

shuchu(L);

cout<<endl<<"请决定向有序表中插入几个数值:";

cin>>m;

for(int i=1;i<=m;i++)

{

cout<<endl<<"请输入第"<<i<<"个要插入的元素";

cin>>x;

SequenceSort(L,x);

shuchu(L);

}

return 0;

}

Status InitList(LinkList &L)

{

L=new LNode;

if(L==NULL) return error;

L->next=NULL;

return ok;

}

Status fuzhi(LinkList &L,int m)

{

LNode *s,*r=L;

ElemType n;

for(int i=1;i<=m;i++)

{

cout<<"请输入第"<<i<<"个元素";

cin>>n;

s=new LNode;

s->data=n;

r->next=s;

r=s;

}

r->next=NULL;

return ok;

}

void shuchu(LinkList L)

{

LNode *p;

p=L->next;

cout<<"单链表内容为:";

while(p!=NULL)

{

cout<<p->data<<" ";

p=p->next;

}

cout<<endl;

}

Status ListInsert(LinkList &L,int x,ElemType y)//插入 前者为位置后者是元素

{

LNode *p=L,*s;

int j=0;

while(p&&(j<(x-1)))

{

p=p->next;

++j;

}

if(!p||j>(x-1)) return error;

s=new LNode;

s->data=y;

s->next=p->next;

p->next=s;

return ok;

}

Status Delete(LinkList &L,int n)

{

LNode *p=L,*q;

int j=0;

while((p->next)&&(j<(n-1)))

{

p=p->next;

++j;

}

if(!(p->next)||(j>n-1)) return error;

q=p->next;

p->next=q->next;

delete q;

return ok;

}

Status Length(LinkList L)

{

int i,j=0;

LNode *p=L->next;

while(p!=NULL)

{

p=p->next;

++j;

}

return j;

}

void Sort(LinkList &L)

{

int i=0,j=0,m=Length(L);

Status t;

LNode *p,*p1,*p2;

for(i=0;i<m-1;i++)

{

p=L->next;

for(j=0;j<m-i-1;j++)

{

p1=p;

p2=p1->next;

if(p1->data>p2->data)

{

t=p2->data;

p2->data=p1->data;

p1->data=t;

}

p=p->next;

}

}

printf("链表升序为:\n");

}

void SequenceSort(LinkList &L,ElemType x)

{

int y=2;

ListInsert(L,y,x);

Sort(L);

}

3总结

六、总结   //注意:必须写!

1.实验过程中遇到的问题及解决方法

问题1:不懂得直接在结构体给数组开辟空间和动态开辟数组空间的区别

解决方法:小组讨论依旧不懂,经老师解答懂了

问题2:对顺序表的长度和数组下标理解有些混乱,导致插入,删除,排序出错

解决方法:看课本并实践解决

2.收获

1如何动态开辟数组空间,以及创建结构体

2学会顺序表和单链表的基本操作(增删改查)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/437123.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++(12)——模板初阶

模板初阶 泛型编程 在日常敲代码过程中&#xff0c;我们难免需要用到交换数据的情况 我们就需要写Swap函数来进行数据的交换。虽然我们可以用函数重载实现交换不同数据类型的Swap函数&#xff0c;但是还是有一些不太方便的地方&#xff1a; 1 重载的函数仅仅是类型不同。代码…

AttributeError: ‘ChatGLMTokenizer‘ object has no attribute ‘sp_tokenizer‘

目录 问题描述 在使用ChatGLMlora微调的时候&#xff0c;报错“AttributeError: ChatGLMTokenizer object has no attribute sp_tokenizer“ ​编辑问题解决&#xff1a; 问题描述 在使用ChatGLMlora微调的时候&#xff0c;报错“AttributeError: ChatGLMTokenizer object h…

一篇就够!产品经理必知的软件工具盘点

无论是初入职场的新人还是正在考虑转向产品经理领域的人&#xff0c;了解并熟练使用一些关键的软件工具对于成功地执行产品管理任务至关重要。在这篇文章中&#xff0c;我们将深入介绍一些产品经理常用的软件工具&#xff0c;涵盖项目管理、团队协作、原型设计以及数据分析等多…

博客系统测试

文章目录 1.项目背景介绍2.功能介绍3.手动测试3.1编写测试用例3.2项目测试3.2.1登录测试3.2.2查看详情页面3.2.3编辑页面3.2.4删除博客3.2.5注销用户 大家好&#xff0c;我是晓星航。今天为大家带来的是 博客系统测试 相关的讲解&#xff01;&#x1f600; 1.项目背景介绍 项…

[pdf]《软件方法》强化自测题业务建模需求分析共191页,230题

潘加宇《软件方法》强化自测题业务建模需求分析共191页&#xff0c;230题&#xff0c;已上传CSDN资源。 在完成书中自测题基础上&#xff0c;进一步强化。 也可到以下地址下载&#xff1a; 资料http://www.umlchina.com/url/quizad.html 如果需要网盘提取码&#xff1a;uml…

【射频连接器】SMB/SMC 同轴连接器

阻抗为 50 欧姆的 Connex SMB/SMC 超小型同轴连接器适用于 4 GHz &#xff08;SMB&#xff09; 或 10 GHz &#xff08;SMC&#xff09; 的应用。这些连接器通常比 SMA 便宜&#xff0c;主要用于微波电话和其他非国防电信要求的应用。 SMB 连接器具有快速连接/断开卡扣式配接功…

大话设计模式——5.代理模式(Proxy Pattern)

1.定义 为其他具体对象提供一种代理用以控制对这个对象的访问&#xff0c;属于结构型模式。 UML图&#xff1a; 2.示例 生活中有许多的代理&#xff0c;如房产中介&#xff0c;房主出售的房子挂在中介处&#xff0c;中介帮忙寻找需要的客户&#xff0c;客户不需要直接接触房…

万物皆可Find My,伦茨科技ST17H6x芯片赋能产品苹果Find My功能

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、Ai…

深入浅出运维可观测工具(四):如何使用eBPF绘制网络拓扑图

哈喽~又到了我们技术分享环节了。eBPF这个系列自分享以来收到了很多朋友的喜欢&#xff0c;真是让博主又惊又喜&#xff0c;感谢大家的支持。话不多说&#xff0c;今天我们将对如何使用eBPF绘制网络拓扑图做一篇分享&#xff0c;文章较长&#xff0c;干货较多&#xff0c;大家可…

11_Http

文章目录 HttpHttp协议网络模型Http协议的工作流程Http请求报文请求行请求方法请求资源协议版本 请求头空行请求体抓包软件&#xff1a;Fiddler Http响应报文响应行状态码 响应头响应体 请求完整的处理流程 Https 整体流程图&#xff1a; 前端&#xff1a;负责获取数据&#xf…

mysql bug( InnoDB: Error number 22),表突然不能读取

mysql bug&#xff08; InnoDB: Error number 22&#xff09;&#xff0c;表突然不能读取 bug最开始的bug&#xff1a;表突然不能读取关闭mysql容器&#xff0c;再次重启失败 解决方案不重建容器的几种可能措施重建容器重建如果懒得打命令或者忘记命令可能的run bug&#xff1a…

【MySQL知识体系】第2章 数据库与表的创建(一)

第2章 数据库与表的创建 2.1 数据库操作 2.2 表操作 文章目录 第2章 数据库与表的创建2.1 数据库操作2.1.1 创建第一个数据库2.1.2 更新数据库名称&#xff08;数据库创建后无法修改名称&#xff09;2.1.3 删除数据库2.1.4 取个合适的数据库名称 第2章 数据库与表的创建 2.1 数…

Vue2 中通过自定义指令将字母转大写

需求是需要将 Code 录入的字母转为大写 /*** 字母转大写*/function inputHandler(e) {e.target.value e.target.value.toUpperCase();// 触发 input 事件以便 v-model 更新数据e.target.dispatchEvent(new Event("input")); }export default {bind: function (el) {…

教育界杂志《教育界》杂志社教育界编辑部2024年第2期目录

教育视界 小学语文课内外阅读的有效融合策略 任小惠; 2-4 项目化学习在初中音乐教学中的应用探索 毛海蓉; 5-7 探索之窗《教育界》投稿&#xff1a;cn7kantougao163.com 儿童无边界阅读支撑系统的建构与实施 袁干斌;蒯红良; 8-10 中学教学 基于核心素养培养的高…

Mybatis-Plus——07,性能分析插件

性能分析插件 一、导入插件二、SpringBoot中配置环境为dev或test环境三、运行测试————————创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ MybatisPlus也提供了性能分析插件&#xff0c;如果超过这个时间就停止运行&#xff0…

【系统学习】2-Java进阶知识总结-3-集合-1-补充【泛型、树、数据结构】

文章目录 泛型什么是泛型&#xff1f;常见的泛型标识符泛型类泛型方法泛型接口通配符 树树的基本概念什么是二叉树&#xff1f;二叉树--普通二叉树二叉树--二叉查找树定义规则优缺点 二叉树--平衡二叉树定义规则旋转机制 二叉树--红黑树定义规则红黑规则 常见数据结构总体特点结…

AI-数学-高中-31-统计-总体方差与样本方差(新教材内容)

原作者视频(P158)&#xff1a;【统计】【一数辞典】5方差知识补充&#xff08;中档&#xff09;&#xff08;新教材内容&#xff09;_哔哩哔哩_bilibili 方差研究的实际意义&#xff1a;方差是充分反映一组数据内波动大小程度的代表性描述数值。若一组数据内&#xff0c;方差越…

谷歌seo外链怎么发?

谷歌SEO外链建设&#xff0c;说白了&#xff0c;就是让别的网站放一条或几条链接指向你的网站&#xff0c;这事听着简单&#xff0c;但你凭什么在别人的地盘放自己网站的链接&#xff0c;就算真的能放自己网站的链接&#xff0c;你又是否能保证你发的内容跟自己网站相关&#x…

AI论文速读 | 【综述】城市计算中跨域数据融合的深度学习:分类、进展和展望

题目&#xff1a;Deep Learning for Cross-Domain Data Fusion in Urban Computing: Taxonomy, Advances, and Outlook 作者&#xff1a;Xingchen Zou, Yibo Yan, Xixuan Hao, Yuehong Hu, Haomin Wen&#xff08;温皓珉&#xff09;, Erdong Liu, Junbo Zhang&#xff08;张钧…

Java适配器设计模式

Java适配器设计模式这一节后面的内容