数据结构模板

数据结构模板

c 复制代码
#define MAXSIZE 100   // 顺序存储最大容量
#define MAXV 100      // 图最大顶点数
#define INF 0x3fffffff

1. 顺序表

静态分配顺序表

c 复制代码
typedef struct {
    int data[MAXSIZE];
    int length;    // 当前有效元素个数
} SqList;

动态分配顺序表(408优先推荐)

c 复制代码
typedef struct {
    int *data;
    int maxsize;   // 最大容量
    int length;    // 当前长度
} SeqList;

2. 单链表

c 复制代码
typedef struct LNode {
    int data;
    struct LNode *next;
} LNode, *LinkList;

3. 双向链表

c 复制代码
typedef struct DNode {
    int data;
    struct DNode *prior;
    struct DNode *next;
} DNode, *DLinkList;

4. 循环单链表

结构体和普通单链表完全一致,仅操作逻辑不同(尾结点next指向头结点)

c 复制代码
typedef struct LNode {
    int data;
    struct LNode *next;
} LNode, *LinkList;

5. 循环双向链表

c 复制代码
typedef struct DNode {
    int data;
    struct DNode *prior;
    struct DNode *next;
} DNode, *DLinkList;

6. 栈

顺序栈

c 复制代码
typedef struct {
    int data[MAXSIZE];
    int top;   // 栈顶指针
} SqStack;

链栈

c 复制代码
typedef struct SNode {
    int data;
    struct SNode *next;
} SNode, *LinkStack;

7. 队列

循环顺序队列

c 复制代码
typedef struct {
    int data[MAXSIZE];
    int front;   // 队头
    int rear;    // 队尾
} SqQueue;

链队列

c 复制代码
typedef struct QNode {
    int data;
    struct QNode *next;
} QNode;

typedef struct {
    QNode *front;
    QNode *rear;
} LinkQueue;

8. 顺序串

c 复制代码
typedef struct {
    char ch[MAXSIZE];
    int length;
} SString;

9. 普通二叉树(二叉链表)

c 复制代码
typedef struct BiTNode {
    int data;
    struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;

10. 线索二叉树

c 复制代码
typedef struct ThreadNode {
    int data;
    struct ThreadNode *lchild, *rchild;
    int ltag;   // 0:左孩子,1:前驱线索
    int rtag;   // 0:右孩子,1:后继线索
} ThreadNode, *ThreadTree;

11. 图

邻接矩阵

c 复制代码
typedef struct {
    int Edge[MAXV][MAXV];
    int n, e;  // n顶点数,e边数
} MGraph;

邻接表(考研最高频)

c 复制代码
// 边结点
typedef struct EdgeNode {
    int adjvex;
    struct EdgeNode *nextedge;
    // 带权图增加 int weight;
} EdgeNode;

// 顶点结点
typedef struct VNode {
    int data;
    EdgeNode *firstedge;
} VNode, AdjList[MAXV];

// 图整体结构
typedef struct {
    AdjList adjList;
    int n, e;
} ALGraph;

相关推荐
祖力5510 小时前
数据结构的基本概念与单向链表(链表数据类型构造、创建、头插、尾插、头删、尾删)
数据结构·链表
白狐_79813 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25813 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
船厂电气自动化ai大模型15 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光15 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
不会就选b19 小时前
算法日常・每日刷题--<优先级队列>2
数据结构·算法
LuminousCPP20 小时前
单链表专题(三)-刷题复盘篇:从快慢指针到环形链表 II 数学推导
数据结构·经验分享·笔记·学习·算法·链表
ChaoZiLL20 小时前
二叉树经典例题
数据结构·算法
三克的油20 小时前
算法基础-1
数据结构·c++·算法