#include "pch.h"
#include <stdio.h>
#include<stdlib.h>
#include <conio.h>
#define ListSize 10
typedef int DataType;
typedef struct
{
DataType data[ListSize];
int length;
}SeqList;
// 返回顺序表L的表长L->length
int LengthList(SeqList *L)
{
return L->length;
}
// 返回顺序表L的第i个结点的值
DataType GetList(SeqList *L, int i)
{
return L->data[i - 1];
}
// 将t插入顺序表L的第i个结点位置上
int InsertList(SeqList *L, DataType t, int i)
{
int j;
if (i< 1|| i>L->length + 1)
{
puts("插入位置错误");
return 0;
}
if (L->length >= ListSize)
{
puts("表满不能插入");
return 0;
}
for (j = L->length - 1; j >= i - 1; j--)
{
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = t;
L->length++;
return 1;
}
void show(SeqList *L)
{
for (int j = 0; j < LengthList(L); j++)
{
printf("%4d", L->data[j]);
printf("\n");
}
}
void MenuShow()
{
// 菜单显示
printf("\n\t\t 线性表的操作 \n");
printf("\n\t\t1 求表长 \t\t2 取表元 \n");
printf("\n\t\t3 插入 \t\t\t4 退出系统 \n");
printf("\n\n");
}
void MenuSelect(SeqList *L, char ch)
{
int i, x;
switch (ch)
{
case '1':printf("表长为:%d\n", LengthList(L)); break;
case '2':printf("请输入取第几个元素:");
scanf_s("%d", &i);
getchar();
if (i< 1|| i>L->length)
{
puts("输入错!");
}
else {
printf("第%d个元素为%d\n", i, GetList(L, i));
}
break;
case '3':printf("请输入要插入元素的位置和数值:");
scanf_s("%d%d", &i, &x);
getchar();
printf(" 原线性表:\n"); show(L);
if (InsertList(L, x, i))
{
printf("插入后的线性表 \n:");
show(L);
}
else
{
printf("插入失败。 \n");
}
break;
case '4':printf("欢迎再次使用,再见!\n:");
exit(0);
}
}
/*
int main()
{
SeqList T = { {12,35,25,17,49,8,20},7 };
char ch;
while (1)
{
system("cls");
MenuShow();
printf("请根据菜单选择所需要的操作");
ch = getchar();
getchar();
MenuSelect(&T, ch);
printf(" 按任意键继续!");
_getch();
_flushall();
}
return 0;
}
*/