#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);
}
//查找元素的位置
int ElemLocate(sqlist L, int e)
{
for(int i=0;i<L.length;i++)
{
if(L.elem[i]==e)
return i+1;
}
return 0;
}
//查找指定位置的元素
int LocateElem(sqlist L, int e)
{
return L.elem[e-1];
}
//查找指定位置的元素并修改其值为指定值
void UpdateElem(sqlist L, int e,int m)
{
L.elem[e-1]=m;
}
//输出线性表的所有元素
void OutPutElem(sqlist L)
{
printf("线性表的元素为:");
for(int i=0;i<L.length;i++)
{
printf("%d\t",L.elem[i]);
}
}
int main(){
int x,y; //用于接受用户输入的值
sqlist L; //定义线性表L
InitList_sq(L); //构造一个长度为5的线性表
L.length = ListLength(&L); //求线性表的长度
printf("线性表长度为:%d\n",L.length); //输出线性表的长度
OutPutElem(L); //输出线性表的所有元素
do
{
printf("\n请输入要查找的位置元素:");
scanf("%d",&x); //接收要查找元素的位置
if(1<=x&&x<=L.length) //判断是否超出线性表的长度
{
int z = LocateElem(L,x);
printf("此位置的元素是%d",z);
break;
}
else
{
printf("位置超出界限,请重新输入");
}
}
while(true);
printf("\n请输入此位置要修改为的元素:");
scanf("%d",&y); //接收要修改后的元素值
UpdateElem(L,x,y); //修改元素
printf("修改后的");
OutPutElem(L); //输出线性表的所有元素
return 0;
}
构造一个长度为5的线性表,求表的长度,查找指定位置的元素,并修改其元素的值为指定值
于 2023-10-14 17:14:30 首次发布