以下为考研高频数据结构的C语言实现模板,涵盖链表、栈、队列、二叉树等核心结构:
1. 单链表
typedef struct Node {
int data; // 数据域
struct Node *next; // 指针域
} Node, *LinkList;
// 初始化
LinkList InitList() {
LinkList L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
return L;
}
// 插入(第i个位置)
int ListInsert(LinkList L, int i, int e) {
Node *p = L; int j=0;
while(p && j
if(!p || j>i-1) return 0;
Node *s = (Node*)malloc(sizeof(Node));
s->data = e; s->next = p->next; p->next = s;
return 1;
}
2. 顺序栈
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top; // 栈顶指针
} SqStack;
// 初始化
void InitStack(SqStack *S) {
S->top = -1;
}
// 入栈
int Push(SqStack *S, int e) {
if(S->top == MAXSIZE-1) return 0;
S->data[++S->top] = e;
return 1;
}
// 出栈
int Pop(SqStack *S, int *e) {
if(S->top == -1) return 0;
*e = S->data[S->top--];
return 1;
}
3. 二叉树
typedef struct BiTNode {
int data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
// 先序遍历
void PreOrder(BiTree T) {
if(T) {
printf("%d ", T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
4. 邻接矩阵(图)
#define MAXVEX 100
typedef struct {
int vexs[MAXVEX]; // 顶点表
int arc[MAXVEX][MAXVEX]; // 邻接矩阵
int numVex, numArc; // 顶点数和边数
} MGraph;
// 初始化图
void CreateMGraph(MGraph *G) {
scanf("%d%d", &G->numVex, &G->numArc);
for(int i=0; i
for(int i=0; i
for(int j=0; j
G->arc[i][j] = 0;
for(int k=0; k
int i,j; scanf("%d%d", &i, &j); // 假设输入顶点下标
G->arc[i][j] = 1;
G->arc[j][i] = 1; // 无向图对称
}
}
这些模板可作为基础框架,根据具体问题稍作修改即可应用,建议结合例题练习记忆。
免责声明:本站所提供试题均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用,不涉及商业盈利目的。如涉及版权问题,请联系本站管理员予以更改或删除。