线性表顺便表示增删改查(静态数组版)
- 陈大剩
- 2021-02-06 22:01:43
- 4249
线性表定义(my.h文件):
#ifndef _MY_H
#define _MY_H
#define MaxSize 10
#include <stdio.h>
#include <stdbool.h>
typedef struct {
int data[MaxSize];
int length;
} SqList;
int getInput();
void InitList(SqList *L);
_Bool ListInsert(SqList *L, int add);
_Bool ListDelete(SqList *L, int add);
_Bool GetElem(SqList *L, int add);
_Bool LocateElem(SqList *L, int e);
void PrintList(SqList L);
#endif
线性表操作方法(my.c文件):
#include "my.h"
/**
* 输入函数
* @return
*/
int getInput() {
printf("请输入整数 \n");
int temp;
scanf("%d", &temp);
return temp;
};
/**
* 初始化链表
* @param L
*/
void InitList(SqList *L) {
int i;
(*L).length = 0;
for (i = 0; i < 5; ++i) {
(*L).data[i] = getInput();
(*L).length++;
}
}
/**
* 按位插入
* @param L
* @param add
* @return
*/
_Bool ListInsert(SqList *L, int add) {
int i;
if (add > (*L).length || add > MaxSize) {
printf("插入位置不合法 \n");
return false;
}
for (i = (*L).length; i >= add; --i) {
(*L).data[i] = (*L).data[i - 1];
}
(*L).data[add - 1] = getInput();
(*L).length++;
return true;
}
/**
* 按位删除
* @param L
* @param add
* @return
*/
_Bool ListDelete(SqList *L, int add) {
int i;
if (add > (*L).length || add > MaxSize) {
printf("删除位置不合法 \n");
return false;
}
for (i = add; i < (*L).length; ++i) {
(*L).data[i - 1] = (*L).data[i];
}
(*L).data[i] = 0;
(*L).length--;
return true;
}
/**
* 按位查找
* @param L
* @param add
* @return
*/
_Bool GetElem(SqList *L, int add) {
int i;
if (add > (*L).length || add > MaxSize) {
printf("查找位置不合法 \n");
return false;
}
printf("查找位置%d的元素为:%d\n", add, (*L).data[add - 1]);
return true;
}
/**
* 按值查找
* @param L
* @param e
* @return
*/
_Bool LocateElem(SqList *L, int e) {
int i;
for (i = 0; i < (*L).length; ++i) {
if ((*L).data[i] == e) {
printf("元素为%d的位置为:%d \n", e, i + 1);
return true;
}
}
printf("无此元素~\n");
return false;
}
/**
* 打印输出
* @param L
*/
void PrintList(SqList L) {
int i;
for (i = 0; i < L.length; ++i) {
printf("%d \n", L.data[i]);
}
}
main.c文件
#include <stdio.h>
#include "my.h"
int main() {
SqList l;
InitList(&l);
putchar('\n');
ListInsert(&l, 4);
putchar('\n');
PrintList(l);
putchar('\n');
ListDelete(&l, 5);
putchar('\n');
PrintList(l);
LocateElem(&l, 3);
GetElem(&l, 5);
return 0;
}
输入
请输入整数
1
请输入整数
2
请输入整数
3
请输入整数
4
请输入整数
5
请输入整数
6
输出
1
2
3
6
4
5
1
2
3
6
5
元素为3的位置为:3
查找位置5的元素为:5
Process finished with exit code 0
赞
(0)