线性表--顺序储存结构

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



线性表   顺序储存

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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值