#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ElemType int
#define MAXSIZE 100
#define Status int
#define ERROR -1
#define OK 1
#define OVERFLOW -2
//创建顺序表数据结构
typedef struct
{
ElemType* elem;//定义储存空间的基地址为elme
int length;//定义顺序表长度为length
}SqList;//结构体类型名为SqList
//************基本操作***********
//初始化,构造空顺序表
Status InitList(SqList& L)//SqList &L相当于SqList l;
{
L.elem = new ElemType[MAXSIZE];//为顺序表动态分配一个大小为MAXSIZE的数组空间
if (!L.elem) { exit(OVERFLOW); }
L.length = 0;//初始化长度为0
return OK;
}
//为顺序表填充初始数据元素
Status CreateList(SqList& L)
{
int n = 0;
printf("请输入初始元素个数:\n");
while (1)
{
scanf("%d", &n);//n代表所需元素个数
if (n > 0 && n < MAXSIZE)//判断空间是否足够
{
for (int i = 0; i < n; i++)
{
printf("请输入第%d个元素", i + 1);
scanf("%d", &L.elem[i]);
L.length++;//完成循环length=n
}
break;
}
else { printf("输入无效,请重新输入:\n"); }
}
return OK;
}
//遍历输出顺序表
void PrintList(SqList& L)
{
for (int i = 0; i < L.length; i++)
{
printf("%d ", L.elem[i]);
}
}
//查找e并返回其位置
Status LocateElem(SqList& L)
{
printf("请输入想查找的值:\n");
int e = 0;
scanf("%d", &e);
for (int i = 0; i < L.length; i++)
{
if (L.elem[i] == e) { return i + 1; }
}
return 0;//查找失败返回0
}
//插入
Status ListInsert(SqList& L, ElemType e)
{
int i;
printf("请输入所需插入位置:\n");
scanf("%d", &i);
if (i > 0 && i <= L.length+1)//判断能否
{
for (int j = L.length - 1; j >= i; j--)
{ L.elem[j + 1] = L.elem[j]; }//移动数据
L.elem[i] = e;
L.length++;
return OK;
}
}
void menu()//菜单
{
printf("1.赋初始值 2.查找\n3.退出 4.");
}
//程序本体
int main()
{
int a=0, c=1;
SqList L;
InitList(L);
do
{
printf("6");
menu();
scanf("%d", &a);
switch (a)
{
case 1:CreateList(L);
PrintList(L);
break;
case 2:LocateElem(L);
PrintList(L);
break;
case 3:c = 0; break;
}
} while (c);
return 0;
}