线性表--顺序储存结构
2009-12-30 17:22
190 查看
我意识到数据结构的重要性了,决定把把各种类型写一遍,熟练一下,我觉得对这些应该达到了如指掌的地步,才算可以...
////////线性表 顺序储存
////////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;
}
////////线性表 顺序储存
////////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;
}
相关文章推荐
- 线性表--顺序储存结构
- 数据结构中线性表的顺序储存结构
- 数据结构之线性结构---队列 顺序储存
- 线性结构--->循环队列的顺序储存实现
- 数据结构之线性结构---栈 顺序储存
- 数据结构之线性表(顺序储存)
- 线性表的顺序储存结构
- 线性表的顺序储存结构定义(动态)实现
- 数据结构 线性表的顺序储存结构
- 线性表的顺序储存结构(向量 )(一)
- 数据结构与算法(线性表_顺序表存储结构)
- 线性结构:顺序表
- 【数据结构之线性表顺序存储】简单的数组的方式实现
- 数据结构二:线性表的顺序结构实现
- 9. C#数据结构与算法 -- 线性存储结构(线性表之顺序表,动态数组和泛型实现)
- 线性表的几个链式储存结构介绍
- 【算法和数据结构】_17_小算法_线性结构:顺序表
- 栈--顺序储存结构
- 关于顺序储存结构的构思内容
- 线性表(顺序存储)结构与功能的简易实现