线性表
顺序表-线性表的顺序表示
#include <stdio.h>// 顺序表的大小
#define MaxSize 50
// 数据类型
typedef int ElemType;
// 静态分配
// 此处可以不用给结构体起名称 使用时直接用别名即可
typedef struct {// 数组ElemType data[MaxSize];// 当前顺序表中元素个数int length;
} SeqList;/** 插入操作*/
bool list_insert(SeqList &L, int pos, ElemType elem) {// 判断位置是否合法if (pos < 1 || pos > L.length) {return false;}// 判断是否超过空间if (L.length >= MaxSize) {return false;}// 往后移动顺序表中的元素for (int j = L.length; j >= pos; j--) {L.data[j] = L.data[j - 1];}// 存入元素 第pos个位置下标为pos - 1L.data[pos - 1] = elem;// 顺序表长度加1L.length++;return true;
}/** 打印顺序表*/
void print_seq_list(SeqList L) {for (int i = 0; i < L.length; i++) {printf("%3d", L.data[i]);}printf("\n");
}/** 删除操作*/
bool list_delete(SeqList &L, int pos, ElemType &elem) {// 判断位置是否合法if (pos < 1 || pos > L.length) {return false;}// 被删除的元素elem = L.data[pos - 1];// 往前移动顺序表中的元素for (int i = pos; i < L.length; i++) {L.data[i - 1] = L.data[i];}// 顺序表长度减1L.length--;return true;
}/** 查找元素的位置*/
int locate_elem(SeqList L, ElemType elem) {for (int pos = 0; pos < L.length; pos++) {if (elem == L.data[pos]) {// pos是数组下标// pos + 1才是元素位置return pos + 1;}}// 未找到return 0;
}int main() {// 一、创建顺序表SeqList L;// 手动赋值L.data[0] = 1;L.data[1] = 2;L.data[2] = 3;// 顺序表元素个数L.length = 3;bool ret;// 二、插入操作// 顺序表第2个位置插入元素60ret = list_insert(L, 2, 60);if (ret) {printf("insert success\n");} else {printf("insert failed\n");}// 三、打印顺序表print_seq_list(L);// 四、删除操作ElemType del;ret = list_delete(L, 1, del);if (ret) {printf("delete success\n");printf("delete element = %d\n", del);} else {printf("delete failed\n");}// 五、查找元素的位置int pos;pos = locate_elem(L, 60);if (pos) {printf("locate element success\n");printf("element pos = %d\n", pos);} else {printf("doesn't loate element\n");}return 0;
}