#include <stdio.h>
#define MaxSize 10
/** 向顺序表中插入元素 */
/** 参数Sqlist:表首地址 */
/** 参数*len: 表的长度 */
/** 参数i: 插入元素的位置 */
/** 参数x:待插入的元素值 */
void insertElem(int Sqlist[],int *len,int i,int x) {
int t;
if(*len==MaxSize || i<1 || i>*len+1) {
printf("This insert is illegal\n");
return;
}
for(t=*len-1; t>=i-1; t--) {
Sqlist[t+1]=Sqlist[t];
}
Sqlist[i-1]=x;
*len=*len+1;
}
/** 向顺序表中删除元素 */
/** 参数Sqlist:表首地址 */
/** 参数*len: 表的长度 */
/** 参数i: 插入元素的位置 */
void DelElem(int Sqlist[],int *len,int i) {
int j;
if(i<1 || i>*len) {
printf("This insert is illegal\n");
return;
}
for(j=i; j<=*len-1; j++) {
Sqlist[j-1]=Sqlist[j];
}
*len=*len-1;
}
/**测试函数*/
int main(int argc,char *argv[] ) {
int Sqlist[MaxSize];
int len;
int i;
printf("Please input six integer number\n");
for(i=0; i<6; i++) {
scanf("%d",&Sqlist[i]);
}
len=6;
for(i=0; i<len; i++) {
printf("%d ",Sqlist[i]);
}
printf("\nThe spare length is %d\n",MaxSize - len);
insertElem(Sqlist,&len,3,0);
for(i=0; i<len; i++)
printf("%d ",Sqlist[i]);
printf("\nThe spare length is %d\n",MaxSize - len);
insertElem(Sqlist,&len,11,0);
DelElem(Sqlist,&len,6);
for(i=0; i<len; i++)
printf("%d ",Sqlist[i]);
printf("\nThe spare length is %d\n",MaxSize - len);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef int ElemType ;
typedef struct {
int *elem;
int length;
int listsize;
} Sqlist;
/** 初始化一个顺序表 */
/** 参数L:Sqlist类型的指针 */
void initSqlist(Sqlist *L) {
L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
if(!L->elem) exit(0);
L->length=0;
L->listsize= MaxSize;
}
/** 向顺序表中插入元素 */
/** 参数L:Sqlist类型的指针 */
/** 参数i:插入元素的位置 */
/** 参数item:插入的元素 */
void InsertElem(Sqlist *L,int i,ElemType 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+10)*sizeof
(ElemType));
L->elem=base;
L->listsize=L->listsize+100;
}
insertPtr=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]); p>= insertPtr; p--)
*(p+1)=*p;
* insertPtr=item;
L->length++;
}
/** 从顺序表中删除元素 */
/** 参数L:Sqlist类型的指针 */
/** 参数i:删除元素的位置 */
void DelElem(Sqlist *L,int i) {
ElemType *delItem, *q;
if(i<1||i>L->length) exit(0);
delItem=&(L->elem[i-1]);
q=L->elem+L->length-1 ;
for(++delItem; delItem<=q; ++ delItem)*( delItem-1)=* delItem;
L->length--;
}
/** 测试函数 */
int main(int argc,char *argv[] ) {
Sqlist l;
int i;
initSqlist(&l);
for(i=0; i<15; i++)
{InsertElem(&l,i+1,i+1);}
printf("\nThe content of the list is\n");
for(i=0; i<l.length; i++)
printf("%d ",l.elem[i]);
DelElem(&l,5);
printf("\nDelete the fifth element\n");
for(i=0; i<l.length; i++)
printf("%d ",l.elem[i]);
return 0;
}