第1个回答 推荐于2017-09-08
include "stdlib.h"
#include "stdio.h"
//顺序表基本操作实现
bool InitList_Sq(SqList &L){//初始化
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) exit(1);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}
bool ListInsert_Sq(SqList &L, int i, int e) { // 算法2.4
// 在顺序线性表L的第i个元素之前插入新的元素e,
// i的合法值为1≤i≤ListLength_Sq(L)+1
int *p;
if (i < 1 || i > L.length+1) return false; // i值不合法
if (L.length >= L.listsize) { // 当前存储空间已满,增加容量
int *newbase = (int *)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof (int));
if (!newbase) return false; // 存储分配失败
L.elem = newbase; // 新基址
L.listsize += LISTINCREMENT; // 增加存储容量
}
int *q = &(L.elem[i-1]); // q为插入位置
for (p = &(L.elem[L.length-1]); p>=q; --p) *(p+1) = *p;
// 插入位置及之后的元素右移
*q = e; // 插入e
++L.length; // 表长增1
return true;
} // ListInsert_Sq
void printList_Sq(SqList L){//注意:1.参数是L,而非&L;2.该函数为扩展的操作。
if(L.length>0){
int i=1;
printf("元素的顺序是:");
for(i=1;i<L.length+1;i++){
printf("%d",L.elem[i-1]);
}
printf("\n");
}
}本回答被提问者采纳