#include<stdio.h>
#include<stdlib.h>
#define InitSize 200
typedef struct
{
int data[InitSize]; //线性表数据
int length; //线性表长度
}SeqList;
void InitList(SeqList *L); //新建一个线性表
int ListEmpty(SeqList L); //判断线性表是否为空
int GetElem(SeqList L,int i,int *e); //按序号查找元素,查找成功返回给e
int GetLoc(SeqList L,int e); //按元素查找序号
int InsertList(SeqList *L,int i,int e); //插入
int DeleteList(SeqList *L,int i,int *e);//删除
int ListLength(SeqList L); //输出表长
void ClearList(SeqList *L); //清除线性表
int main()
{
SeqList L;
int num;
int len;
InitList(&L);
printf("输入线性表长度:\n");
scanf("%d",&len);
printf("输入线性表数据:\n");
for (int i = 1; i <= len; i++)
{
scanf("%d",&num);
InsertList(&L,i,num);
}
printf("输出线性表数据:\n");
for (int i = 0; i < L.length; i++)
{
printf("%d\n",L.data[i]);
}
system("pause");
return 0;
}
void InitList(SeqList *L)
{
L->length=0; //初始化表长度
}
int ListEmpty(SeqList L)
{
if (L.length==0) //判断线性表是否为空,是返回1不是返回0
{
return 1;
}else
{
return 0;
}
}
int GetElem(SeqList L,int i, int *e) //按照位置查找数据并返回数据的值
{
if (i<1||i>L.length)
{
return -1; //无法查找返回-1
}else
{
*e=L.data[i-1]; //用e返回查找的值
}
}
int GetLoc(SeqList L,int e) //按照值查找位置
{
for (int i = 0; i < L.length; i++)
{
if (L.data[i]==e)
{
return i+1;
}
}
return 0;
}
int InsertList(SeqList *L,int i,int e) //插入元素,能插入返回1
{
if (i<1||i>L->length+1) //判断位置是否在范围中
{
printf("插入位置不合法");
return -1;
}else if (L->length>=InitSize) //判断顺序表是否满了
{
printf("顺序表已经满了,不能再插入元素");
return 0;
}else
{
for (int j = L->length; j >= i; j--)
{
L->data[j]=L->data[j-1];
}
L->data[i-1]=e;
L->length++;
return 1;
}
}
int DeleteList(SeqList *L,int i,int *e) //删除
{
if (L->length<=0)
{
printf("顺序表已空,无法删除");
return -1;
}else if (i<1||i>L->length)
{
printf("该位置无法删除");
return -1;
}else
{
*e=L->data[i-1];
for (int j = i; j <= L->length-1; j++)
{
L->data[j-1]=L->data[j];
L->length--;
return 1;
}
}
}
int ListLength(SeqList L) //返回线性表长度
{
return L.length;
}
void ClearList(SeqList *L) //清除线性表
{
L->length=0;
}
C语言实现线性表
最新推荐文章于 2021-10-09 16:22:23 发布