目的
熟悉掌握线性表顺序存储结构,掌握与应用顺序表的查找、插入、删除等基本操作算法,训练和提高结构化程序设计能力及程序调试能力。
有如下的顺序表的定义和声明:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100 //最大长度
typedef int datatype;
typedef struct
{
datatype data[MAXSIZE];
int last;
}SeqList;
以顺序表为存储结构实现以下基本操作:
1.顺序表的初始化
2.插入操作
3.删除操作
4.按值查找
5.输出线性表的内容
6.定义主函数中对上列操作进行验证。
模块划分如下:
1.顺序表的初始化:SeqList * init_SeqList()
2.插入操作:int Insert_SeqList(SeqList *L,int i,datatype x)
3.删除操作:int Delete_SeqList(SeqList *L,int i)
4.按值查找:int Location_SeqList(SeqList *L, datatype x)
5.输出线性表的内容:void Output_SeqList(SeqList *L)
6.主函数:void main()
运行展示
在这里插入图片描述
代码实现部分
有清除的注释
```c
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct {
datatype data[MAXSIZE];
int last;
} SeqList;
// 顺序表的初始化
SeqList* init_SeqList() {
SeqList* L = (SeqList*)malloc(sizeof(SeqList));
L->last = -1;
return L;
}
// 插入操作
int Insert_SeqList(SeqList* L, int i, datatype x) {
if (L->last == MAXSIZE - 1) {
printf("顺序表已满,插入失败。\n");
return 0;
}
if (i < 1 || i > L->last + 2) {
printf("插入位置非法,插入失败。\n");
return 0;
}
int j;
for (j = L->last; j >= i - 1; j--) {
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = x;
L->last++;
return 1;
}
// 删除操作
int Delete_SeqList(SeqList* L, int i) {
if (i < 1 || i > L->last + 1) {
printf("删除位置非法,删除失败。\n");
return 0;
}
int j;
for (j = i; j <= L->last; j++) {
L->data[j - 1] = L->data[j];
}
L->last--;
return 1;
}
// 按值查找
int Location_SeqList(SeqList* L, datatype x) {
int i;
for (i = 0; i <= L->last; i++) {
if (L->data[i] == x) {
return i + 1;
}
}
return -1; // 未找到返回-1
}
// 输出线性表的内容
void Output_SeqList(SeqList* L) {
if (L->last == -1) {
printf("顺序表为空。\n");
return;
}
printf("顺序表的内容为:");
int i;
for (i = 0; i <= L->last; i++) {
printf("%d ", L->data[i]);
}
printf("\n");
}
// 主函数进行验证
int main() {
//定义要输入的元素个数
int N;
int valueTemp;
// 设置计数器
int count=0;
// 表初始化
SeqList* L = init_SeqList();
//定义长度
printf("请输入N的长度:");
scanf("%d",&N) ;
// 表插入调用函数
while(count<N){
printf("请输入第%d个元素:",count+1);
scanf("%d",&valueTemp);
Insert_SeqList(L, count+1, valueTemp);
count ++;
}
printf("元素插入完毕\n");
Output_SeqList(L);
printf("请你输入要查按照的值:\n");
scanf("%d",&valueTemp);
int index = Location_SeqList(L, valueTemp);
if (index != -1) {
printf("元素%d的位置为:%d\n", valueTemp,index);
}
else {
printf("元素%d未找到。\n",valueTemp);
}
Delete_SeqList(L, 2);
Output_SeqList(L);
free(L);
return 0;
}