结构
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last;
};
方法
- 初始化:初始化一个线性表
- 插入数据:在第i个位置插入数据
- 删除数据:删除第i个位置的数据
- 查找数据:查找线性表中的位置
代码实现
#include <iostream>
#include <stdio.h>
#define MAXSIZE 100
typedef int Position;
typedef struct LNode *List;
struct LNode {
int data[MAXSIZE];
Position last;
};
List Init();
bool Insert(List list, int value, Position index);
bool Delete(List list, Position index);
Position Find(List list, int value);
void print(List list);
int main() {
List list = Init();
for (int i = 0; i < 10; i++) {
Insert(list, i + 1, i+1);
}
Position x = Find(list, 3);
printf("位置为 %d\n", x);
print(list);
Delete(list, 3);
print(list);
x = Find(list, 3);
printf("结果为: %d\n", x);
Insert(list, 3, 3);
print(list);
return 0;
}
List Init() {
List list;
list = (List)malloc(sizeof(struct LNode));
list->last = -1;
return list;
}
bool Insert(List list, int value, Position index) {
index = index - 1;
if (list->last == MAXSIZE) {
printf("线性表满了");
return false;
}
if (index < 0 || index > list->last + 1) {
printf("插入的位置不合法");
return false;
}
for (int i = list->last; i >= index; i--) {
list->data[i + 1] = list->data[i];
}
list->data[index] = value;
list->last++;
return true;
}
bool Delete(List list, Position index) {
if (index < 0 || index > list->last) {
printf("删除的位置不合法");
return false;
}
for (int i = index; i <= list->last; i++) {
list->data[i-1] = list->data[i];
}
list->last--;
return true;
}
Position Find(List list, int value) {
Position index = -1;
for (int i = 0; i <= list->last; i++) {
if (list->data[i] == value) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到");
}
return index;
}
void print(List list) {
printf("[");
for (int i = 0; i < list->last; i++) {
printf("%d ,", list->data[i]);
}
printf("]\n");
}