顺序表以及单链表

目录

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学会顺序表和单链表的基本操作(增删改查)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MOMO_Tips】批量将word转换为PDF格式

批量将word转换为PDF格式 1.打开文件–>选项–>自定义功能区–>开发工具–>确定 2.点开开发工具&#xff0c;选择第一个visual basic 3.进入页面后找到插入–>模块&#xff0c;就可以看到这样的画面之后将下列vba代码复制粘贴到模块中 Sub ConvertWordsToPd…

python基础——入门必备知识

&#x1f4dd;前言&#xff1a; 本文为专栏python入门基础的第一篇&#xff0c;主要带大家先初步学习一下python中的一些基本知识&#xff0c;认识&#xff0c;了解一下python中的一些专有名词&#xff0c;为日后的学习打下良好的基础,。本文主要讲解以下的python中的基本语法&…

Python中format函数字符串格式化入门

格式化在程序开发中非常常见&#xff0c;大家肯定不陌生&#xff0c;Python中也存在多重格式化方式&#xff0c;format函数就是其中一种。 函数原型 format(value[, format_spec]) 参数意义 value&#xff1a; 需要被格式化的字符串 format_spec&#xff1a; 格式化的格式 …

Web自动化测试--selenium

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

基于springboot+vue的旅游管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

vcomp140.dll丢失如何修复,5种修复方法轻松搞定vcomp140.dll问题

vcomp140.dll文件的丢失可能会引发一系列系统运行与软件功能上的问题。具体来说&#xff0c;这个动态链接库文件是Visual C Redistributable的一部分&#xff0c;对于许多基于此环境开发的应用程序至关重要。一旦缺失&#xff0c;可能会导致部分应用程序无法正常启动或运行&…

外包干了3个月,技术倒退太明显...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

【个人账号体系设计】偏个人功能类账号功能模块设计

本文讨论了针对以个人功能为主的业务系统的账号能力设计&#xff0c;包括账号管理的总体需求、关键属性和设计要点。重点在于如何通过细致的设计实现账号的有效管理和安全性&#xff0c;确保系统既便于用户操作又能维持管理的严密性。 文章目录 需求能力模块设计 需求能力 在进…

25考研资料PDF汇总

资料V馊public号ZL研知己 V馊public号ZL研知己 25考研资料PDF汇总

HarmonyOS—配置编译构建信息

在进行应用/服务的编译构建前&#xff0c;需要对工程和编译构建的Module进行设置。API Version 9、API Version 8与API Version 4~7的构建体系不同&#xff0c;因此在设置编译构建信息时也存在差异&#xff1a; API Version 9&#xff1a;需要对构建配置文件、构建脚本、应用依…

passwd: Authentication token manipulation error

passwd: Authentication token manipulation error 身份验证令牌操作错误。 可能原因&#xff1a; 1、密码文件无修改权限&#xff08;有i权限&#xff09; lsattr /etc/{passwd,shadow} 取消方法 chattr -i /etc/passwd chattr -i /etc/passwd 2、/文件系统无空间或者无inod…

基于MPPT的太阳能光伏电池simulink性能仿真,对比扰动观察法,增量电导法,恒定电压法

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 扰动观察法 (Perturb and Observe Method) 4.2 增量电导法 (Incremental Conductance Method) 4.3 恒定电压法 (Constant Voltage Method) 5.完整工程文件 1.课题概述 在simulink中&#xff0c;实…