c++简单编写线性表(实验)

哇 好久没更博客了  因为从上次更文到现在为止,我一直在学c#,然后也觉得没什么太大的东西想写在博客上,

总之这次就简单的传一下学校安排的数据结构的实验,我还是学生,是新手,希望能继续跟大家一起学习,

共勉,有错望指出,这样就可以不断学习,谢谢。

*******这次实验是第一个实验,名称是线性表操作,我就结合我所学的写一下。********

*******线性表的概念我就不多提了,直接上代码,简单粗暴。********

*******线性表操作我写有了 初始化 判断为空 判断为满 插入 追加 删除 销毁 遍历等操作********

代码如下:

# include<iostream>
# include<stdlib.h>
using namespace std;

typedef struct Arr
{
int * pBase; //存储空间的基地址
int len; //当前顺序表所能容纳的最大长度
int cnt; //当前顺序表的有效长度
} Shun;

void csh(Shun & pArr,int len);//功能:初始化顺序表
bool append(Shun & pArr,int val);//功能:往顺序表中追加元素
bool isempty(Shun & pArr);//功能:判断顺序表是否为空
bool isfull(Shun & pArr);//功能:判断顺序表是否为满
bool Insert(Shun & pArr,int pos,int val);//功能:在指定位置插入一个元素
void Show(Shun & pArr);//功能:遍历整个顺序表并打印
bool Delete(Shun & pArr,int pos);//功能:删除顺序表指定位置的元素
bool xh(Shun & pArr);//功能:销毁顺序表

int main(void)
{
Shun biao; //声明一个顺序表
csh(biao,10); //初始化该顺序表并赋予10单位的长度
cout<<"往顺序表里追加(增加)5个元素,追加后的结果如以下所示:"<<endl;
append(biao,1);
append(biao,5);
append(biao,87);
append(biao,12);
append(biao,100);
Show(biao);
cout<<"删除第3个元素,删除后的结果如以下所示:"<<endl;
Delete(biao,3);
Show(biao);
cout<<"往第2个位置插入一个值“520”,插入后的结果如以下所示:"<<endl;
Insert(biao,2,520);
Show(biao);
if(xh(biao))
cout<<"已销毁成功!!"<<endl;
else
cout<<"销毁出错!!"<<endl;
return 0;
}

void csh(Shun & pArr,int len)
{
pArr.pBase = new int[len];
if(!pArr.pBase)
exit(-1);
pArr.len=len;
pArr.cnt=0;
}

bool isempty(Shun & pArr)
{
if(0==pArr.cnt)
return true;
else
return false;
}

bool isfull(Shun & pArr)
{
if(pArr.len==pArr.cnt)
return true;
else
return false;
}

void Show(Shun & pArr)
{
if(isempty(pArr))
cout<<"顺序表为空!!"<<endl;
else
{
for(int i=0; i<pArr.cnt; i++)
{
cout<<pArr.pBase[i]<<" ";
}
cout<<endl;
}
}

bool append(Shun & pArr,int val)
{
if(isfull(pArr))
return false;
else
{
pArr.pBase[pArr.cnt++]=val;
return true;
}
}

bool Insert(Shun & pArr,int pos,int val)
{
if(isfull(pArr))
return false;
if(pos<1||pos>pArr.cnt+1)
return false;
if(pos<=pArr.cnt)
{
for(int i=pArr.cnt-1; i>=pos-1; i--)
{
pArr.pBase[i+1]=pArr.pBase[i];
}
}
pArr.pBase[pos-1]=val;
pArr.cnt++;
return true;
}

bool Delete(Shun & pArr,int pos)
{
if(isempty(pArr))
return false;
if(pos<0||pos>pArr.cnt)
return false;
for(int i=pos; i<pArr.cnt; i++)
{
pArr.pBase[i-1]=pArr.pBase[i];
}
pArr.cnt--;
return true;
}

bool xh(Shun & pArr)
{
if(pArr.pBase==NULL)
return false;
delete pArr.pBase;
pArr.pBase=NULL;
return true;
}

 

效果图如下:

 

 ******共勉******

posted @ 2017-11-14 15:29  超级VIP  阅读(5323)  评论(0编辑  收藏  举报