您的位置:首页 > 编程语言

线性结构的顺序存储和链式存储的实现代码(一)

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;

}

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐