考研 408 × 求职面试
知识点 · 数据结构 · 进阶
每日一题 · 数据结构
解析
面试小贴士 · 数据结构
代码实现 · C
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *data;
int size; /* 当前元素个数 */
int capacity; /* 当前容量 */
} SeqList;
/* 扩容:容量翻倍,均摊 O(1) */
static void grow(SeqList *L) {
int newCap = L->capacity ? L->capacity * 2 : 1;
int *p = (int *)realloc(L->data, newCap * sizeof(int));
if (!p) { printf("内存不足\n"); exit(1); }
L->data = p;
L->capacity = newCap;
}
/* 尾插 */
void push_back(SeqList *L, int x) {
if (L->size == L->capacity) grow(L);
L->data[L->size++] = x;
}
int main(void) {
SeqList L = {NULL, 0, 0}; /* 空表,容量为 0 */
for (int i = 0; i < 12; i++) {
push_back(&L, i);
printf("插入 %2d: size=%2d capacity=%2d\n", i, L.size, L.capacity);
}
free(L.data);
return 0;
}