#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量
#define LISTINCREMENT 5 //线性表存储空间的分配增量
typedef int ElemType;
typedef int 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=5; //空表长度为5
L.listsize=LIST_INIT_SIZE*sizeof(ElemType); //初始存储容量
return OK;
}
//得到线性表的长度
int GetLength(Sqlist *L) {
return L->length;
}
//查找元素位置
int LocateElem(Sqlist L,int num) {
return L.elem[num-1];
}
//修改num位置的值为y
void UpdateElem(Sqlist L,int num,int y) {
L.elem[num-1]=y;
}
//输出线性表内容
void printList(Sqlist L) {
int i=0;
while(i<L.length) {
printf("%d\t",L.elem[i]);
i++;
}
}
int main() {
Sqlist L;//定义线性表
InitList_sq(L); //构造一个长度为5的线性表
int LL;
LL = GetLength(&L);
printf("线性表长度为:%d\n",LL);
printList(L);
int num,x;
while(1) {
scanf("%d",&num);
if(num<1||num>L.length) {
printf("越界了");
} else {
x = LocateElem(L,num);
printf("要查找的位置元素:%d\n",x);
break;
}
}
int y;
printf("\n请输入要修改的值:");
scanf("%d",&y);
UpdateElem(L,num,y);
printList(L);
return 0;
}