线性表--顺序储存结构

本文通过C++实现了一个简单的线性表数据结构,并演示了如何创建、插入、删除元素及进行查找等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我意识到数据结构的重要性了,决定把把各种类型写一遍,熟练一下,我觉得对这些应该达到了如指掌的地步,才算可以...



////////线性表   顺序储存

////////code by Apan

#include<iostream>

using namespace std;

////////定义线性表

#define MAXSIZE 1000

typedef int DATATYPE;

typedef struct

{

DATATYPE data[MAXSIZE];

int last;

}Seqlist;

////////创建线性表

void Creat_Seqlist(Seqlist* L)

{

cout<<"请输入线性表的长度: ";//////输入线性表长度

cin>>L->last;

for(int i=0;i<L->last;++i)

{

cout<<"输入第"<<i+1<<"个数据: ";

cin>>L->data[i];

}

}

////////插入操作

void Insert_Seqlist(Seqlist* L ,int i,DATATYPE x)

{

///////检查线性表是否已满

if(L->last==MAXSIZE)

{

cout<<"线性表已满,不能插入!" ;

return ;

}
//////检查插入位置的正确性

if(i<0||i>L->last)

{

cout<<"插入位置错误!";

return ;

}

//////插入数据

else

{

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

L->data[j+1]=L->data[j];

L->data[i-1]=x;

L->last++;

}

}

//////删除操作

void Del_Seqlist(Seqlist* L ,int i)

{

/////检查是否为空栈

if(L->last<0)

{

cout<<"线性表为空!";

return ;

}

/////检查删除位置

if(i<1||i>L->last)

{

cout<<"无法找到!";

return ;

}

/////删除元素

else

{

for(int j=i-1;j<L->last-1;++j)

L->data[j]=L->data[j+1];

L->last--;

}

}

//////按值查找

void Location_Seqlist(Seqlist* L,DATATYPE x)

{

int i=0;

while(i<L->last&&L->data[i]!=x)

i++;

if(i==L->last)

cout<<"不存在该值!";

else

cout<<"元素 "<<x<<" 是第 "<<i+1<<" 个元素"<<endl;

}
/////输出线性表

void Out_Seqlist(Seqlist L)

{

cout<<"/n线性表如下:/n";

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

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

cout<<endl;

}

////////主函数

int main()

{

//////建立线性表

cout<<"建立线性表 /n";

Seqlist seq;

Creat_Seqlist(&seq);

Out_Seqlist(seq);

//////插入元素

cout<<"/n/n/n插入元素/n"

<<"请输入插入的位置:";

int i;

DATATYPE x;

cin>>i;

cout<<"/n请输入要插入的元素:";

cin>>x;

Insert_Seqlist(&seq,i,x);

Out_Seqlist(seq);

///////删除元素

cout<<"/n/n/n删除元素/n删除第几个元素:";

cin>>i;

Del_Seqlist(&seq,i);

Out_Seqlist(seq);

/////按值查找

cout<<"/n/n/n按值查找/n请输入要查找的值: /n";

cin>>x;

Location_Seqlist(&seq ,x);

Out_Seqlist(seq);

cout<<"/n/n/n谢谢参与,再见!"<<endl;

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值