线性表--顺序储存结构
2016-01-26 00:00
246 查看
我意识到数据结构的重要性了,决定把把各种类型写一遍,熟练一下,我觉得对这些应该达到了如指掌的地步,才算可以...
////////线性表 顺序储存
////////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;
}