线性结构的顺序存储和链式存储的实现代码(一)
2012-06-04 17:14
946 查看
线性结构的物理存储主要有两种方式:顺序存储和链式存储。线性结构中一个数据元素是没有什么意义的,所有的数据元素构成一个整体才有意义。为了对这个整体有一个大方为的管理,所以,我们应该建立关于这个整体的头,数据元素的类型另说。以后写关于数据结构的代码都是基于C++这门语言来实现。
线性结构的顺序存储方式的代码(C++的内容略)
//加载的头文件
# include<iostream.h>
# include<stdlib.h>
//宏的定义
# define MAXSIZE 10
# define ADD 10
//表头数据类型
typedef struct
{
int *List; //用于存放数组的首地址
int curlen;//当前这个表(数组)存了多少个数据了
int maxsize;//这个表最大可以存放的数据个数
}ArrList;
//初始化一个线性表
void IniList(ArrList &L)
{
L.List=new int[MAXSIZE]; //这个表的list存放着一个一位数组的首地址,用于存放数据
if(!L.List)
{
cout<<"线性表的初始化出现错误!\n";
return; //if 语句判断上一条语句是否被正确的执行了
}
L.curlen=0; //这个表当前一个数据也没有存
L.maxsize=MAXSIZE; //这个表最大可以存放10个数据
}
//初始连续输入n个元素
void Creatlist(ArrList &L,int n)
{
int i;
int e;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"数:";
cin>>e;
L.List[i]=e;
}
L.curlen=n;
cout<<"您的操作已完成!\n";
}
//显示表中的元素
void Display(ArrList L)
{
int i;
for(i=0;i<L.curlen;i++)
{
if((i+1)%5==0 )
cout<<"\n";
cout<<"L["<<i<<"]"<<"="<<L.List[i]<<" ";
}
cout<<"\n您的操作已完成!\n";
}
//插入一个元素
void Inlist(ArrList &L,int i,int e)
{
if(i<1||i>L.curlen+1)
{
cout<<"您的插入位置不正确!\n";
return;
}
if(L.curlen>=L.maxsize)//如果因为表不能插入数据时,那么就扩大一位数组的大小
{
int * relist;
int q;
relist=new int[L.maxsize+ADD];
for(q=0;q<L.maxsize;q++)
relist[q]=L.List[q];
free (L.List);
L.List=relist;
}
int j;
for(j=L.curlen;j>=i;j--)//使要插入数据的位置的原来数据向后动一个单位
{
L.List[j]=L.List[j-1];
}
L.List[i-1]=e;
L.curlen++;
cout<<"您的操作已经成功完成!";
}
//删除一个元素
void Deletelist(ArrList &L,int i)
{
if((i<1)||(i>L.curlen))
{
cout<<"您输入到位置错误!\n";
return ;
}
for(++i;i<=L.curlen;++i)
L.List[i-1]=L.List[i];
--L.curlen;
cout<<"您的操作已完成!\n";
}
void main()
{
ArrList a;
int m;
int n;
IniList(a);
int option;
option=-1;
while(option!=0)
{
cout<<"\n\n\n\n";
cout<<" 菜单\n\n";
cout<<" 0:退出\n";
cout<<" 1:初始连续输入元素\n";
cout<<" 2:插入元素\n";
cout<<" 3:删除元素\n";
cout<<" 4:显示线性表中的元素\n\n\n\n";
cout<<"请选择您的操作:";
cin>>option;
switch (option)
{
case 0 :
option=0;
break;
case 1 :
cout<<"请输入连续输入数据的个数:";
cin>>n;
Creatlist(a,n);
break;
case 2 :
cout<<"请输入插入元素的位置:";
cin>>n;
cout<<"请输入插入元素的值:";
cin>>m;
Inlist(a,n,m);
break;
case 3 :
cout<<"请输入删除元素的位置:";
cin>>n;
Deletelist(a,n);
break;
case 4 :
Display(a);
break;
default :
cout<<"请输入正确的选项";
break;
}
}
}
相关文章推荐
- 线性结构的顺序存储和链式存储的实现代码(二)
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 线性结构-栈的顺序存储和链式存储实现
- 数据结构2----线性表顺序存储和链式存储的实现(霜之小刀)
- 【线性表一:】两种存储结构的代码实现:顺序存储和链式存储
- 数据结构之线性表――链式存储结构之单链表(php代码实现)
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- [SDUT](2116)数据结构实验之链表一:顺序建立链表 ---链式存储(线性表)
- 顺序表链式结构实现多项式相加。参照《数据结构》中的伪代码
- 线性结构的顺序存储的实现
- 数据结构算法代码实现——线性表的链式表示与实现(单链表)(三 )
- 线性表的顺序存储和链式存储的实现(C)
- 数据结构——线性表的伪链表存储(顺序存储链式遍历)
- 【数据结构之线性表顺序存储】简单的数组的方式实现
- 二叉树的链式存储结构 C++代码实现
- 线段树,实例,代码实现,区间最值,区间求和,顺序存储,链式存储
- 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现
- 线性表的链式存储结构之单链表类的实现之补充_Java
- C++学习总结——顺序存储,链式存储,索引存储,哈希存储的优缺点,以及vector数组,list链表,十字链表,索引结构,hash表的实现
- [数据结构]程杰队列的链式存储结构及实现代码