#define _CRT_SECURE_NO_WARNINGS 1
//顺序表
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1000
typedef int ElemType;
typedef struct LNode
{
ElemType data[MAXSIZE];
int Length;
}Sqlink;
void InitLink(Sqlink* L)//初始化顺序表
{
L->Length = 0;
return;
}
void Createlink(Sqlink* L, int n)//创建顺序表
{
printf("请输入各个元素: \n");
int i;
for (i = 0; i < n; i++)
{
scanf("%d", &L->data[i]);
}
L->Length = n;
return;
}
int Searchlink(Sqlink* L, int i,int *e)//按顺序查找
{
if (i<1 || i>L->Length) return 0;
*e = L->data[i - 1];
return 1;
}
int Getlink(Sqlink* L, int i, int* e)//按值查找
{
int j;
for (j = 0; j < L->Length; j++)
{
if (L->data[j] == i)
{
*e = j + 1;
return 1;
}
}
return 0;
}
int Insertlink(Sqlink* L, int i, int e)//插入
{
if (i<1 || i>L->Length) return 0;
int j;
for (j = L->Length - 1; j >= i - 1; j--)
{
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = e;
L->Length++;
return 1;
}
int Deletelink(Sqlink* L, int i,int *e)//删除
{
if (i<1 || i>L->Length) return 0;
*e = L->data[i - 1];
int j;
for (j = i - 1; j < L->Length-1; j++)
{
L->data[j] = L->data[j + 1];
}
L->Length--;
return 1;
}
void Showlink(Sqlink* L)//打印顺序表
{
int j;
for (j = 0; j < L->Length; j++)
{
printf("%d ", L->data[j]);
}
}
int main()
{
Sqlink L;
int n,i,num,e;
InitLink(&L);
printf("请输入顺序表的个数: ");
scanf("%d", &n);
Createlink(&L, n);
printf("\n请输入查找的序号: ");
scanf("%d", &i);
num = Searchlink(&L, i,&e);
if (num)
{
printf("查找成功!!\n");
printf("查找的元素是 %d\n", e);
}
else printf("查找失败!!!\n");
printf("请输入元素的值: ");
scanf("%d", &i);
num = Getlink(&L, i, &e);
if (num)
{
printf("查找成功!!\n");
printf("查找的序号是: %d\n", e);
}
else printf("查找失败!!!\n");
printf("请输入要插入的元素和序号: ");
scanf("%d %d", &i, &e);
num = Insertlink(&L, e, i);
if (num)
{
printf("插入成功!!!\n");
Showlink(&L);
printf("\n");
}
else printf("位置有误\n");
printf("请输入要删除的序号: ");
scanf("%d", &i);
num = Deletelink(&L, i, &e);
if (num)
{
printf("删除成功!!!\n");
printf("删除的元素是 %d \n", e);
Showlink(&L);
}
else printf("删除失败!!!\n");
return 0;
}
数据结构--顺序表
于 2023-07-15 20:35:14 首次发布