线性表的基本操作
#include <stdio.h>
#include <malloc.h>
typedef struct
{
int a[10];
int last;
}SeqList;
SeqList *Init_Seqlist()
{
SeqList *L = (SeqList*)malloc(sizeof(SeqList));
L->last = -1;
return L;
}
void Ins_SeqList(SeqList *L,int i,int e)
{
int k;
if((i<1) || (i>L->last+2))
printf("插入位置不合法.\n");
if(L->last >= 10-1)
printf("表满,无法插入.\n");
for(k=L->last;k>=i-1;k--)
L->a[k+1]=L->a[k];
L->a[i-1]=e;
L->last++;
}
int Loc_SeqList(SeqList *L,int e)
{
int i;
for(i=0;i<L->last;i++)
if(e == L->a[i])
return i+1;
return -1;
}
void Del_SeqList(SeqList *L,int i,int *x)
{
int k;
if((i<1)||(i>L->last+1))
printf("删除位置不合法!\n");
*x = L->a[i-1];
for(k=i; k<=L->last; k++)
{L->a[k-1] = L->a[k];}
L->last--;
}
void BIns_SeqList(SeqList *L,int i,int n)
{
int k;
if((i<1) || (i>L->last+2))
printf("插入位置不合法.\n");
if(L->last >= 10-1)
printf("表满,无法插入.\n");
for(k=L->last;k>=i-1;k--)
L->a[k+1]=L->a[k];
L->a[i-1]=n;
L->last++;
}
main()
{
int i,j;
int n;
int x;
SeqList *L1;
L1=Init_Seqlist();
for(i=0;i<10;i++)
Ins_SeqList(L1, 1, i);
for(i=0;i<L1->last;i++)
printf("%d ",L1->a[i]);
n = Loc_SeqList(L1,3);
printf("\n元素3在%d位置\n",n);
Del_SeqList(L1,5,&x);
printf("5位置的%d元素被删除\n",x);
scanf("%d",&i);
for(j=0;j<i;j++)
{
scanf("%d",&n);
BIns_SeqList(L1,i,n);
}
}