#include <iostream>
#include <algorithm>
using namespace std;
//类型声明。
struct SqList{
int *elem;//存储动态分配的连续存储空间的首地址。
int listsize;//记录顺序表的容量大小。
int length;//记录顺序表中存储的元素个数(线性表的长度)。
};
//构建可以存储n个整数的空的顺序表。
void createList(SqList &L,int n)
{
L.elem=(int*)malloc(sizeof(int)*n);//动态分布数组空间,为存储线性表中的元素和关系做准备。
if(L.elem==NULL)
{
cout<<"failed";
exit(0);
}
L.listsize=n;
L.length=0;
}
//带头结点的单链表的遍历。
void printList(SqList L)
{
for(int i=0;i<L.length;i++)
{
cout<<L.elem[i]<<" ";
}
cout<<endl;
}
void inserta(SqList &L,int i,int n)
{
if(i<1||i>L.length+1)
{
cout<<"position error";
exit(0);
}
if(L.length>=L.listsize)//空间不够。
{
int *newbase;
newbase=(int *)realloc(L.elem,sizeof(int)*(L.listsize+1));//扩容。
if(newbase==NULL)
{
cout<<"failed"<<endl;
exit(0);
}
L.elem=newbase;
L.listsize++;
}
for(int j=L.length-1;j>=i-1;j--)
{
L.elem[j+1]=L.elem[j];
}
L.elem[i-1]=n;
L.length++;
}
int main()
{
SqList h;
int n;
cin>>n;
createList(h,n);
for(int i=0;i<n;i++)
{
cin>>h.elem[i];
h.length++;
}
inserta(h,3,2);
printList(h);
return 0;
}
顺序表的基本操作——添加数据
于 2023-10-06 00:32:23 首次发布