c++数据结构顺序表代码
时间: 2023-05-15 09:03:13 浏览: 124
顺序表是一种常用的线性数据结构,它在内存中连续存储元素,具有随机访问和快速插入删除的特点。以下是C语言实现顺序表的代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE]; // 顺序表元素数组
int length; // 当前元素个数
} SeqList;
void InitList(SeqList *list) {
list->length = 0;
}
void Insert(SeqList *list, int pos, int value) {
if (pos < 0 || pos > list->length) {
printf("插入位置不合法\n");
return;
}
if (list->length == MAXSIZE) {
printf("顺序表已满,无法插入\n");
return;
}
for (int i = list->length; i > pos; i--) { // 将插入位置后面的元素依次后移
list->data[i] = list->data[i-1];
}
list->data[pos] = value; // 在插入位置处插入元素
list->length++; // 元素个数加 1
}
void Delete(SeqList *list, int pos) {
if (pos < 0 || pos >= list->length) {
printf("删除位置不合法\n");
return;
}
for (int i = pos; i < list->length-1; i++) { // 将删除位置后面的元素依次前移
list->data[i] = list->data[i+1];
}
list->length--; // 元素个数减 1
}
void PrintList(SeqList *list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
SeqList list;
InitList(&list);
Insert(&list, 0, 1);
Insert(&list, 0, 2);
Insert(&list, 1, 3);
PrintList(&list); // 2 3 1
Delete(&list, 1);
PrintList(&list); // 2 1
return 0;
}
```
顺序表代码中包含了初始化、插入、删除和打印操作。其中,插入和删除操作需要判断操作位置是否合法,并且插入操作还需判断数组是否已满。在实际应用中,顺序表还可以进一步优化,如使用动态扩容,提高数组利用率等。
阅读全文