1,顺序表的插入算法:
算法描述:在一个顺序表的第i个元素前插入元素e,并打印新的顺序表中的元素
#include<stdio.h>
#include <malloc.h>
#define SIZE 100
#define INCREMENT_SIZE 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
bool initSqList(SqList&L)
{
L.elem=(int*)malloc(SIZE*sizeof(int));
if(!L.elem)
return false;
L.length=0;
L.listsize=SIZE;
return true;
}
bool ListInsert(SqList&L,int i,int e)
{
int*newbase;
int temp,j;
if(i<1||i>L.length+1)
return false;
if(L.length>=L.listsize)
{
newbase=(int*)realloc(L.elem,(L.listsize+INCREMENT_SIZE)*sizeof(int));
if(!newbase)
return false;
L.elem=newbase;
L.listsize+=INCREMENT_SIZE;
}
temp=L.elem[i-1];
L.elem[i-1]=e;
for(j=L.length-1;j>i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i]=temp;
L.length+=1;
return true;
}
void main()
{
SqList sqt;
int position;
int element;
initSqList(sqt);//要初始化顺序表
scanf("%d",&sqt.length);
for(int i=0;i<sqt.length;i++)
scanf("%d",&sqt.elem[i]);
printf("\n");
printf("input the position:");
scanf("%d",&position);
printf("\n");
printf("input the element:");
scanf("%d",&element);
printf("\n");
ListInsert(sqt,position,element);
for(int j=0;j<sqt.length;j++)
printf("%d ",sqt.elem[j]);
printf("\n");
}
运行结果如下:
2,顺序表的删除算法
算法描述:在一个顺序表中,删除第i个元素,返回该元素并打印删除后的顺序表
代码如下:
#include<stdio.h>
#include <malloc.h>
#define SIZE 100
#define INCREMENT_SIZE 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
bool initSqList(SqList&L)
{
L.elem=(int*)malloc(SIZE*sizeof(int));
if(!L.elem)
return false;
L.length=0;
L.listsize=SIZE;
return true;
}
bool SqlistDelete(SqList&L,int i,int &e)
{
if(i<0||i>L.length)
return false;
e=L.elem[i-1];
for(int j=i;j<L.length;j++)
L.elem[j-1]=L.elem[j];
--L.length;
return true;
}
void main()
{
SqList sqt;
int position;
int element;
initSqList(sqt);
printf("input the size of SList:");
scanf("%d",&sqt.length);
for(int i=0;i<sqt.length;i++)
scanf("%d",&sqt.elem[i]);
printf("\n");
printf("input the position:");
scanf("%d",&position);
printf("\n");
SqlistDelete(sqt,position,element);
printf("return the deleted element:%d\n",element);
printf("\n");
printf("output the new SList:\n");
for(int j=0;j<sqt.length;j++)
printf("%d ",sqt.elem[j]);
printf("\n");
}
运行结果如下: