// ConsoleApplication8.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef char DataType;
typedef struct node
{
DataType data[MaxSize];
int length;
}Lnode, * List; //结构体的类型定义
//初始化顺序表
void Init_List(List L) //用List结构体类型定义一个结构体变量L
{
L->length = 0;
}
//顺序表的长度
int Length_List(List L)
{
return L->length;
}
//取顺序表中的某个元素
DataType Get_List(List L, int i, DataType x)
{
if (i<1 || i> L->length)
printf("fine error!");
else
x = L->data[i - 1];
return x;
}
//查找顺序表中值为x的元素,返回其序号
int Location_List(List L, DataType x)
{
int i = 0;
while (i < L->length && L->data[i] != x)
i++;
if (i == L->length)
return -1;
else
return i + 1;
}
//在线性表的第i个位置插入值为x的元素
void Insert_List(List L, int i, DataType x)
{
int j;
if (i<1 || i>L->length + 1)
printf("插入位置错误!!!
");
else
{
for (j = L->length; j >= i; j--)
L->data[j] = L->data[j - 1];
L->data[i - 1] = x;
}
L->length++;
}
//删除线性表第i个位置上的元素
void Delete_List(List L, int i)
{
int j;
if (i<1 || i>L->length)
printf("此位置没有数据可以删除!!!");
else
{
for (j = i; j < L->length; j++)
L->data[j - 1] = L->data[j];
L->length--;
}
}
//输出顺序表
void Print_List(List L)
{
int i;
for (i = 1; i < L->length; i++)
printf("%c->", L->data[i - 1]);
printf("%c", L->data[L->length - 1]);
}
/////////////主函数/////////////
int main()
{
int i = 1, n;
Lnode L;
char ch, x;
Init_List(&L);
printf("
****************顺序表演示程序****************
");
printf("请输入顺序表的元素,以#结束:");
ch = getchar();
while (ch != '#')
{
Insert_List(&L, i, ch);
i++;
ch = getchar();
}
printf("顺序表为:");
Print_List(&L);
printf("
");
printf("该顺序表的长度为:%d", L.length);
printf("
");
//fflush(stdin);
printf("
");
printf("输入要查找的元素:");
//fflush(stdin);
getchar();
x = getchar();
//scanf("%c", &x);
printf("该元素为%c序位为%d", x, Location_List(&L, x));
printf("
");
printf("请输入要查找的元素的序位:");
scanf_s("%d", &n);
printf("第%d个位置对应的元素是:%c", n, Get_List(&L, n, x));
printf("
");
printf("输入要插入的元素及其序位:<用逗号隔开>");
//fflush(stdin); //接收回车这个字符
getchar();
scanf("%c,%d", &x, &n);
Insert_List(&L, n, x);
printf("插入元素后的顺序表为:");
Print_List(&L);
printf("
");
printf("请输入要删除的元素序位:");
scanf("%d", &n);
Delete_List(&L, n);
printf("
删除后的线性表为:");
Print_List(&L);
printf("
");
return 1;
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件