数据结构线性表顺序存储代码
时间: 2024-09-12 13:17:35 浏览: 19
线性表是一种线性结构,它是最基本、最简单的一种数据结构。在计算机科学中,线性表可以使用数组这种顺序存储结构来实现。顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。以下是使用C语言实现的线性表顺序存储的基本操作代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义线性表最大长度
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int ElemType; // 定义数据类型
typedef int Status; // 定义状态类型
// 线性表的顺序存储结构定义
typedef struct {
ElemType data[MAXSIZE]; // 数组存储数据元素
int length; // 线性表当前长度
} SqList;
// 初始化线性表
Status InitList(SqList *L) {
L->length = 0;
return OK;
}
// 插入元素
Status ListInsert(SqList *L, int i, ElemType e) {
if (L->length == MAXSIZE) { // 线性表已满
return ERROR;
}
if (i < 1 || i > L->length + 1) { // 检查插入位置的有效性
return ERROR;
}
for (int k = L->length - 1; k >= i - 1; k--) { // 将要插入位置后数据元素向后移动一位
L->data[k + 1] = L->data[k];
}
L->data[i - 1] = e; // 将新元素插入
L->length++;
return OK;
}
// 删除元素
Status ListDelete(SqList *L, int i, ElemType *e) {
if (L->length == 0) { // 线性表为空
return ERROR;
}
if (i < 1 || i > L->length) { // 检查删除位置的有效性
return ERROR;
}
*e = L->data[i - 1];
for (int k = i; k < L->length; k++) { // 将删除位置后数据元素前移
L->data[k - 1] = L->data[k];
}
L->length--;
return OK;
}
// 打印线性表
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L);
ListInsert(&L, 1, 10);
ListInsert(&L, 2, 20);
ListInsert(&L, 3, 30);
PrintList(L);
ElemType e;
if (ListDelete(&L, 2, &e) == OK) {
printf("Deleted element is: %d\n", e);
}
PrintList(L);
return 0;
}
```
这段代码展示了如何使用C语言创建一个线性表的顺序存储结构,并提供了初始化、插入、删除和打印线性表的基本操作。顺序存储结构简单、直观,但在插入和删除操作时可能会涉及到数据的移动,效率较低,特别是当线性表较长时。