实现如下函数建立顺序表。 1.清空线性表 void clear(seqlist *L); 2.将元素“x”插入到“L”指向线性表的表尾void add(seqlist *L,int x); 3.可求线性表的长度int length(seqlist *L);
时间: 2024-09-19 16:13:40 浏览: 72
12.zip_清除线性表_清除线性表L_顺序表
在C语言中,我们可以使用结构体表示顺序表,并为其提供相应的操作函数实现。这里是一个简单的例子:
首先,我们需要定义一个顺序表的结构体`seqlist`,包含一个整型数组`data`存储数据以及两个指针变量`head`和`tail`分别指向列表的第一个元素和最后一个元素。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构
typedef struct {
int *data;
int size;
int capacity;
int head; // 首节点索引
int tail; // 尾节点索引
} seqlist;
// 函数声明
void clear(seqlist *L);
void add(seqlist *L, int x);
int length(seqlist *L);
// 初始化顺序表
seqlist* create_seqlist(int capacity) {
seqlist *L = (seqlist*)malloc(sizeof(seqlist));
L->data = (int*)malloc(capacity * sizeof(int));
L-1;
L->tail = -1;
return L;
}
// 清空线性表
void clear(seqlist *L) {
if (L->size > 0) {
free(L->data);
L->data = NULL;
L->size = 0;
L->head = L->tail = -1;
}
}
// 插入元素到表尾
void add(seqlist *L, int x) {
if (L->size == L->capacity) { // 扩容
L->capacity *= 2;
L->data = (int*)realloc(L->data, L->capacity * sizeof(int));
}
L->data[++L->tail] = x;
if (L->head == -1) L->head = 0;
}
// 计算线性表长度
int length(seqlist *L) {
return L->size;
}
// 示例用法
int main() {
seqlist *L = create_seqlist(5);
clear(L); // 清空列表
add(L, 10); // 插入元素
printf("Length of list: %d\n", length(L)); // 输出长度
return 0;
}
```
阅读全文