考研 408 × 求职面试
知识点 · 数据结构 · 基础
每日一题 · 数据结构
解析
面试小贴士 · 数据结构
代码实现 · C
#include <stdio.h>
#define MAXSIZE 10
typedef struct { int data; int next; } Node;
Node space[MAXSIZE]; int head = 0, avail;
void init() {
space[head].next = -1;
for (int i = 1; i < MAXSIZE - 1; i++) space[i].next = i + 1;
space[MAXSIZE - 1].next = -1; avail = 1;
}
int mallocNode() {
if (avail == -1) return -1;
int i = avail; avail = space[avail].next; return i;
}
void freeNode(int i) { space[i].next = avail; avail = i; }
void insertHead(int x) {
int i = mallocNode(); if (i == -1) return;
space[i].data = x; space[i].next = space[head].next; space[head].next = i;
}
void deleteHead() {
int p = space[head].next; if (p == -1) return;
space[head].next = space[p].next; freeNode(p);
}
void traverse() {
for (int p = space[head].next; p != -1; p = space[p].next) printf("%d ", space[p].data);
putchar('\n');
}
int main() {
init(); insertHead(10); insertHead(20); traverse();
deleteHead(); traverse(); return 0;
}