顺序表的实现

目录

顺序表主要是以下几个操作:初始化操作,插入操作,删除操作

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define Max 50
typedef struct
{
int num;
char name[20];
int score;
}Ele_Type;
typedef struct
{ Ele_Type elem[50];
int length;
}seqlist;

int ListIn(seqlist *L,int i,Ele_Type x)
/*在顺序表L中第i个元素之前插入元素x */
{ int k;
     if((i<1)||(i>Max+1))
{ printf("i值不合法\n");
         return ERROR;
}
     if(L->length>=Max)
{ printf("表已满无法插入\n");
          return ERROR;
}
for(k=L->length-1;k>=i-1;k--)
{   L->elem[k+1]=L->elem[k];
}
L->elem[i-1].num=x.num;
strcpy(L->elem[i-1].name,x.name);
L->elem[i-1].score=x.score;
L->length++;
return OK;
}

int ListDel(seqlist *L, int i)
/*在顺序表L中删除第i个元素*/
{int k;
if((i<1)||(i>Max))
{
printf("i值不合法\n");
     return ERROR;
}
    for (k=i;k<=L->length-1;k++)
{ L->elem[k-1]=L->elem[k];
}
L->length--;
return OK;
}

void main()
{
int i;
seqlist *L;
Ele_Type stu[50]={
   {2001,"Gao Jie",92},
   {2002,"Dong Yuming",88},
   {2003,"Zhao Bin",55},
   {2004,"Gao Haiming",75}};
Ele_Type x={2008,"Wang Xiao",61};
L=(seqlist*)malloc(sizeof(seqlist));
L->length=4;
for(i=0;i<L->length;i++)
{ L->elem[i]=stu[i];
}
ListIn(L,3,x);
printf("Inserted seqlist is:\n");
for(i=0;i<L->length;i++)
{
   printf("%6d %s %5d\n",L->elem[i].num,L->elem[i].name,
   L->elem[i].score);
}
ListDel(L,2);
printf("Deleted seqlist is:\n");
for(i=0;i<L->length;i++)
{ printf("%6d %s %5d\n",L->elem[i].num,L->elem[i].name,L->elem[i].score);
}
free(L);
}

实现的如下图

顺序表的实现