‹返回

政策解读

首页 › 考研资讯 › 政策解读

数据结构代码模板

来源:张老师 政策解读

以下为考研高频数据结构的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 && jnext; 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; inumVex; i++) scanf("%d", &G->vexs[i]);

for(int i=0; inumVex; i++)

for(int j=0; jnumVex; j++)

G->arc[i][j] = 0;

for(int k=0; knumArc; k++) {

int i,j; scanf("%d%d", &i, &j); // 假设输入顶点下标

G->arc[i][j] = 1;

G->arc[j][i] = 1; // 无向图对称

}

}

这些模板可作为基础框架,根据具体问题稍作修改即可应用,建议结合例题练习记忆。

# 计算机考研 # 计算机408
THE END