#include<stdio.h>
typedef int A;
const int LIST_INIT_SIZE=100;
const int LISTINCREMENT=10;
typedef struct
{
A *elem;
int length;
int listsize;
int incrementsize;
}Sqlist;
//初始化操作
void InitList_Sq(Sqlist &L,int maxsize=LIST_INIT_SIZE,int incresize=LISTINCREMENT)
{
L.elem=new A[maxsize];
L.length=0;
L.listsize=maxsize;
L.incrementsize=incresize;
}
//顺序表追加空间的函数
void increment(Sqlist &L)
{
A *a,i;
a=new A[L.listsize+L.incrementsize];
for(i=0;i<L.length;i++)
a[i]=L.elem[i];
delete[]L.elem;
L.elem=a;
L.listsize+=L.incrementsize;
}
//插入元素操作
bool ListInsert_Sq(Sqlist &L,int i,A e)
{
if(i<1||i>L.length+1)
{
printf("i值不合法\n");
return false;
}
else
{
A *p,*q;
if(L.length>=L.listsize)
increment(L);
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return true;
}
}
int main()
{
Sqlist L;
A n;
scanf("%d",&n);
InitList_Sq(L);
for(int i=0;i<n;i++)
{
scanf("%d",&L.elem[i]);
L.length++;
}
for(i=0;i<n;i++)
printf("%d ",L.elem[i]);
printf("\n");
A e;
scanf("%d%d",&i,&e);
bool f = ListInsert_Sq(L,i,e); //将e插在第i个数的前面
{
if(f==true)
{
for(i=0;i<n+1;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
}
return 0;
}转载于:https://www.cnblogs.com/NYNU-ACM/p/4237363.html
C++顺序表操作实现
本文详细介绍了一种使用C++实现顺序表数据结构的方法,包括初始化、追加空间、插入元素等关键操作。通过具体代码示例,展示了如何管理数组大小,确保数据插入时的空间充足,并实现了元素的正确插入。
6960

被折叠的 条评论
为什么被折叠?



