C语言数据结构_向顺序表中插入元素
作者:互联网
创建一个静态的顺序表Sqlist[Maxsize]
后,向该静态顺序表中第i个位置插入元素item的代码如下:
void InsertElem(ElemType Sqlist[], int &n, int i, ElemType item){
//向顺序表Sqlist中第i个位置插入元素item,该顺序表原长度为n
int t;
if(n == MaxSize || i < 1 || i > n+1)
exit(0); //非法插入
for(t=n-1; t>=i-1; t--)
Sqlist[t+1] = Sqlist[t]; //将i-1以后的元素顺序后移一个元素的位置
Sqlist[i-1] = item; //在第i个位置上插入元素item
n = n+1; //表长加1
}
函数InsertElem()的作用是在顺序表中第i个位置插入元素item,并将顺序表的长度增加1。其实现过程如下:
(1)判断插入元素的位置是否合法。一个长度为n的顺序表的可能插入元素的位置是1~n+1,因此如果i<1或者i>n+1,或者表已满,即n==MaxSize的插入都是非法的。
(2)将顺序表的i-1以后的元素顺序后移一个元素的位置,即:将顺序表从第i个元素到第n个元素顺序后移一个元素的位置。
(3)在表的第i个位置(下标是i-1)上插入元素item,并将表长加1。
创建一个动态的顺序表L后,向该动态生成的顺序表中第i个位置插入元素item的代码如下:
void InsertElem(Sqlist *L,int i,ElemType item)
{
/*向顺序表L的第i个位置插入元素item*/
ElemType *base,*insertPtr,*p;
if(i<1 || i>L->length+1) exit(0); //非法插入
if(L->length>=L->listsize)
{
base=(ElemType*)realloc(L->elem,(L->listsize+100)*sizeof(ElemType));
/*重新追加空间*/
L->elem=base;
L->listsize+=100;
}
insertPtr=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=insertPtr;p--) /*将i-1个位置以后的元素顺序向后移一个位置*/
*(p+1)=*p;
*insertPtr=item;
L->length++;
}
标签:顺序,位置,插入,元素,C语言,item,Sqlist,表中,数据结构 来源: https://www.cnblogs.com/zonkidd/p/15815954.html