2026考公/考研寄宿

高三式 半军事化 强化管理 一战成硕

2026考研专业课资料

覆盖全国7万+初试/复试专业课资料

134 5670 7733

各地信息

数据结构代码模板 订阅+ 进入阅读模式

2024-09-25 10:00 来源:张老师

以下为考研高频数据结构的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; // 无向图对称

}

}

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

THE END  

声明:本站点发布的来源标注为“思研教育”的文章,版权均属思研教育所有,未经允许不得转载。

免责声明:本站所提供试题均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用,不涉及商业盈利目的。如涉及版权问题,请联系本站管理员予以更改或删除。