#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#define MaxSize 100
#define ElemType int
typedef struct {
ElemType data[MaxSize];
int last;
}Sqlist;//顺序表的类型
void InitList(Sqlist* L)//L=&List 初始化顺序表
{
L->last = -1;
}
void OutputList(Sqlist L)//输出顺序表所有元素
{
int i;
for (i = 0; i <= L.last; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
bool Create(Sqlist* L, int n) { //判断是否成立
if (n > MaxSize || n < 1) {//判断是否非法
return false;
}
else {
return true;
}
}
void CreateList(Sqlist* L) {//创建顺序表
int n;
bool flag_C;
printf("请输入您想创建顺序表的长度:");
scanf("%d", &n);
flag_C = Create(L, n);
int c;//赋值循环变量
if (flag_C) {
L->last = n - 1;
for (c = 0; c <= n - 1; c++) {//赋值
scanf("%d", &L->data[c]);
}
printf("您成功创建了一个长度为%d的顺序表\n", n);
OutputList(*L);
}
else {
printf("输入非法,创建失败!");
}
}
void GetData(Sqlist L)//输入位置查找元素
{
int g;
printf("请输入您想要查找的元素所在位置: ");
scanf("%d", &g);
if (g > L.last + 1 || g < 1) {
printf("您的输入并不合法。");
}
else {
printf("%d\n", L.data[g - 1]);
}
}
void Locate(Sqlist L) {//查看固定位置的元素
int l;
printf("输入您想查看位置的元素:");
scanf("%d", &l);
int k = 0;
while ((k <= L.last) && (L.data[k] != l)) k++;
if (k <= L.last) {
k = k + 1;
printf("%d\n", k);
}
else {
printf("您输入的元素并未查到。");
}
}
bool Delet(Sqlist* L, int m) {
if (L->last == -1) {
printf("顺序表为空,无法删除\n"); return false;
}
if (m<1 || m>L->last + 1) {
printf("删除位置不合法,无法删除\n"); return false;
}
}
int DeletList(Sqlist* L) {//删除元素
int m;
int j;
printf("请输入要删除第几个元素: ");
scanf("%d", &m);
bool flag_D;
flag_D = Delet(L, m);
for (j = m + 1; j <= L->last + 1; j++)
L->data[j - 2] = L->data[j - 1];
L->last--;
return 1;
}
int InsertList(Sqlist* L)
{
int x;
int i;
int p;
printf("输入插入位置和插入元素: ");
scanf("%d", &p);
scanf("%d", &x);
if (L->last >= MaxSize - 1) {
printf("顺序表满了,无法插入\n");
}
if ((p < 1) || (p > L->last + 2)) {
printf("插入位置不合法,无法插入\n");
}
for (i = L->last; i >= p - 1; i--)
L->data[i + 1] = L->data[i];
L->data[p - 1] = x;
L->last++;
return 1;
}
void Interface() {
printf("1.创建顺序表 \t"); printf("2.查找元素\n");
printf("3.删除元素 \t"); printf("4.定位元素\n");
printf("5.输出所有元素\t"); printf("6.插入指定元素到指定位置\n");
printf("7.结束操作\n");
}
int main() {
Sqlist List;
InitList(&List);
int choice;
while (1)
{
Interface();
printf("请输入菜单序号:");
scanf("%d", &choice);
if (choice == 7) break;
switch (choice)
{
case 1:CreateList(&List); break;
case 2:GetData(List); break;
case 3:DeletList(&List); break;
case 4:Locate(List); break;
case 5:OutputList(List); break;
case 6:InsertList(&List); break;
default:printf("您的输入有误\n");
}
}
return 0;
}
C语言实现顺序表 创建表/查找元素/删除元素/定位元素/输出表元素/插入元素到指定位置功能
最新推荐文章于 2024-09-19 20:37:55 发布