数据结构模板

数据结构模板

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;

相关推荐
白狐_7981 小时前
408 数据结构|红黑树插入:只记两大类
数据结构
Lost of 程序猿6 小时前
.NET 线程安全集合与并发数据结构深度实战:从 lock 到无锁
数据结构·安全·.net
机器学习之心7 小时前
基于BiGRU-Attention的轴承剩余寿命预测(MATLAB实现):从振动信号到RUL曲线的完整闭环
数据结构·算法·matlab·轴承剩余寿命预测·振动信号·bigru-attention
青梅橘子皮7 小时前
优选算法---专题2(滑动窗口)
数据结构·算法
程序猫.7 小时前
双指针问题
java·数据结构·算法
50万马克的面包7 小时前
数据结构:线性表 —— 顺序表与链表完整总结
数据结构·链表
白狐_7987 小时前
408 数据结构|散列表构造题:开放定址法做题套路
数据结构·散列表
runningshark8 小时前
CH-6图论基础-有向树
数据结构
旖旎夜光8 小时前
LeetCode 525:连续数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
白狐_7988 小时前
408 数据结构|双散列与探测覆盖率:互质判断法
数据结构