线性表的顺序列表的定义、初始化等操作

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERR 0
#define MAXSIZE 100
//定义顺序存储结构

typedef struct list{
int elem[MAXSIZE];
int last;
}SeqList;

//初始化线性表
SeqList *InitList()
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
L->last = 0;
return L;
}

//查找操作,按内容查找
int Locate(SeqList *L,int e)
{
int i=0;
for (i;i<L->last-1;i++)
{
if (L->elem[i]==e)
{
return i+1;
}
}
return -1;
}

//插入操作.在表的第i个位置前插入一个新元素

int InsList(SeqList *L,int i,int e)
{
int k;
if (i<1||i>L->last+1)
{
printf("插入位置不合法!");
return ERR;
}
if (L->last>=MAXSIZE)
{
printf("表已满,无法插入!");
return ERR;
}

for (k=L->last-1;k>=i;k--)
{
L->elem[k+1]=L->elem[k];
}
L->elem[i-1]=e;
L->last++;
return OK;
}

//删除表的第i个元素,并且用指针e返回其值
int DelList(SeqList *L,int i,int *e)
{
int k;
if (i<1||i>L->last)
{
printf("删除位置不合法!");
return ERR;
}
*e=L->elem[i-1];
for (k=i-1;k<L->last;k++)
{
L->elem[k]=L->elem[k+1];
}
L->last--;
return OK;
}
//线性表的输出
void print_seqList(SeqList *L)
{
int j;
for (j=1;j<=L->last;j++)
{
printf("%d ",L->elem[j-1]);
if (j%5==0)
{
printf(" ");
}
}
}
int main()
{

SeqList *L;
L=InitList();
int a,j,locate,e;
for (j=1;j<10;j++)
{
printf("请输入要插入的数字: ");
scanf("%d",&a);
InsList(L,a,j);
}
printf(" ");
printf("————————————————————: ");
printf("————————————————————: ");
printf("插入后的列表为: ");
print_seqList(L);
printf(" ");
printf("————————————————————: ");
printf("————————————————————: ");
printf("查找元素5是否存在,显示下标: ");
locate = Locate(L,5);
printf("%d ",locate);
printf("————————————————————: ");
printf("————————————————————: ");
printf("删除第7个元素,返回被删除的元素: ");
DelList(L,7,&e);
printf("被删除的元素是:%d ",e);
return 0;
}

原文地址:https://www.cnblogs.com/pilihaotian/p/4830432.html