#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量
#define LISTINCREMENT 5 //线性表存储空间的分配增量
typedef int ElemType,status;
#define OK 1
#define OVERFLOW -1
typedef struct
{
ElemType *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)
}sqlist;
//构造一个长度为5的线性表
status InitList_sq(sqlist &L)
{
int x;
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //开辟5*ElemType字节长度的地址空间,并返回首地址
if(!L.elem)exit(OVERFLOW);
printf("创建一个长度为5的线性表\n"); //存储分配失败
for(int i =0;i<LIST_INIT_SIZE;i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%d",&x);
L.elem[i]=x;
}
L.length=LIST_INIT_SIZE; //空表长度为5
L.listsize=LIST_INIT_SIZE*sizeof(ElemType); //初始存储容量
return OK;
}
//线性表的长度
int ListLength(sqlist *L)
{
return (L->length);
}
//输出线性表的所有元素
void OutPutElem(sqlist L)
{
printf("线性表的元素为:");
for(int i=0;i<L.length;i++)
{
printf("%d\t",L.elem[i]);
}
}
//删除第i个元素
void DelElem(sqlist *L,int Loc)
{
for(int i=Loc;i<=L->length;i++) //从要删除位置开始往后遍历
{
L->elem[i-1]=L->elem[i]; //将要删除位置的后面的元素依次往前赋值
}
L->length--; //删除元素后长度减1
}
//在指定元素前插入一个新的元素
void LocInsElem(sqlist *L)
{
L->length++;
int x,y;
int flag=true;
do
{
printf("\n请输入指定元素:");
scanf("%d",&x); //接收指定的元素
for(int i=0;i<L->length;i++)
{
if(x==L->elem[i]) //判断是否此元素是否存在
{
x=i;
flag=false;
break;
}
}
if(flag==false)
{
break;
}
else
{
printf("此元素不存在,请重新输入");
}
}
while(true);
printf("请输入插入的元素:");
scanf("%d",&y);
for(int i=L->length-1;i>x;i--)
{
L->elem[i]=L->elem[i-1]; //将要插入位置的后面的元素依次往后赋值
}
L->elem[x]=y;
}
int main()
{
sqlist L;
InitList_sq(L); //构造一个长度为5的线性表
L.length = ListLength(&L); //求线性表的长度
printf("线性表长度为:%d\n",L.length); //输出线性表的长度
OutPutElem(L); //输出线性表的所有元素
int x;
do
{
printf("\n请输入要删除的位置元素:");
scanf("%d",&x); //接收要删除元素的位置
if(1<=x&&x<=L.length) //判断是否超出线性表的长度
{
DelElem(&L,x);
break;
}
else
{
printf("位置超出界限,请重新输入");
}
}
while(true);
L.length = ListLength(&L); //求线性表的长度并赋值给LL
printf("线性表长度为:%d",L.length); //输出线性表的长度
OutPutElem(L); //输出线性表的所有元素
LocInsElem(&L); //在指定元素前插入一个新的元素
OutPutElem(L); //输出线性表的所有元素
printf("线性表长度为:%d",L.length); //输出线性表的长度
}
构造一个长度为5的线性表,求表的长度,查找指定位置的元素,并修改其元素的值为指定值
本文介绍了如何使用C语言实现一个简单的线性表,包括构造线性表、获取和显示长度、以及在指定位置插入和删除元素的操作。
摘要由CSDN通过智能技术生成