3.添加元素信息———————————————————
#include<iostream>
using namespace std;
#define MAX_SIZE 100
typedef struct {
int *elems;//顺序表的基地址
int length;//顺序表的长度(元素个数)
int size;//顺序表的总长度
}SqList;//别名可以直接用来定义变量
//1.返回值用bool类型来判断是否成功
bool initList(SqList &L)//引用来接收实参,构造一个空的顺序表L
{
L.elems=new int[MAX_SIZE];//为顺序表分配MAX_SIZE个int类型的空间
//防御性编程:内存不足时,出现分配不了内存的情况,返回false
if(!L.elems) return false;//空间分配失败
L.length=0; //存储长度置为0
L.size=MAX_SIZE; //顺序表总的空间大小
return true;//初始化成功
}
//2.打印列表信息:输出顺序表中最大空间数,表中元素个数以及元素信息
void listPrint(Sqlist &L){
cout<<"顺序表的存储空间size:"<<L.size<<",已保存元素个数length:"<<L.length<<endl;
for(i=0;i<=L.length-1;i++) //输出具体元素信息
{
cout<<L.elems[i]<<" ";
}
cout<<endl;
}
//3.添加元素(列表尾部添加)
bool listAppend(SqList &L,int e)
{ //判断存储空间是否已满
// 已保存元素个数=总的空间大小
if(L.length==L.size) return false;
L.elems[L.length]=e; //length为数组下标,把元素e赋值它
L.length++; //下标自动后移一位,指向下一个地址(表长增1)
return true;
}
int main(){
SqList list; //定义一个列表
int e;
cout<<"顺序表的初始化……"<<endl;
//1.初始化列表 定义一个接口信息
if(initList(list)){ //调用函数传参
cout<<"顺序表初始化成功!";
}
//2.打印列表信息
listPrint(list);
//3.添加元素
int count=0;
cout<<"请输入要添加的元素个数:";
cin>>count;
for(int i=0;i<count;i++){
cout<<"\n请输入要添加的元素e:";
cin>>e;
if(listAppend(list,e)){
cout<<"添加成功!"<<endl;
}else{
cout<<"添加失败!"<<endl;
}
}
//打印添加元素后(总的存储空间大小,已保存元素长度)
listPrint(list);
system("pause");
return 0;
}