数据结构-线性表-数组实现
任务
创建一个静态的顺序表存放整数,大小为10,完成以下操作:
- 输入6个整数,打印出顺序表中的内容,并显示顺序表中剩余的空间个数;
- 在顺序表的第3个位置插入元素值为0,打印出顺序表的内容,并显示剩余空间个数;
- 试图在顺序表第11个位置插入元素值为0 ,程序应提示:插入位置无效;
- 删除表中第2个元素,打印出顺序表的内容。
请给出实现以上功能的程序清单,程序中函数、关键语句等应给出必要的注释,并注意变量命名,提高代码质量。
代码实现
#include<iostream>
using namespace std;
typedef int DataType;
// 定义线性表
typedef struct SeqList{
DataType *elem;
int Max; //表示线性表最大长度
int n;//表示线性表中数据元素的个数
} SeqList;
typedef struct SeqList * pseqlist;
// 创建
void CreateSeqList(pseqlist palist, int m)
{
if (palist!=NULL)
{
palist->elem= new DataType(m);
if (palist->elem!=NULL)
{
palist->Max=m;
palist->n=0;
return ;
}
else free(palist);
}
cout<<"creat failed!";
}
// 添加元素
void Append(pseqlist palist, DataType x)
{
if (palist->n >= palist->Max)
{
cout<<"overflow!";
return ;
}
palist->elem[palist->n]=x;
palist->n++;
}
// 指定位置, 插入元素
void Insert(pseqlist palist, int index, DataType data){
if(index<0 || index > palist->n){
cout<<"插入失败"<<endl;
return ;
}
for(int i=palist->n; i>=index; i--){
palist->elem[i+1] = palist->elem[i];
}
palist->elem[index] = data;
palist->n++;
}
// 输出线性表
void Print(pseqlist palist)
{
for(int i=0;i<palist->n;i++){
cout<<palist->elem[i]<<" ";
}
cout<<" 剩余: "<<palist->Max-palist->n<<endl;
}
// 指定位置, 删除元素
void Del(pseqlist palist, int index){
if(index<0 || index > palist->n){
cout<<"删除失败"<<endl;
return ;
}
for(int i=index; i<palist->n;i++){
palist->elem[i] = palist->elem[i+1];
}
palist->n--;
}
int main(){
pseqlist list;
DataType data;
CreateSeqList(list, 10);
for(int i=0; i<6; i++){
cin>>data;
Append(list, data);
}
Print(list);
Insert(list, 2, 0);
Print(list);
Insert(list, 10, 0);
Del(list, 1);
Print(list);
return 0;
}