释放内存:free(),当用户不再需要一段动态内存空间的时候释放,目前常用的动态内存分配为malloc
单向循环列表:是单项列表的一种改进方式,二者的不同在于单向循环列表的尾结点的指针域存放头结点的地址,首尾相连
单向循环列表也有虚拟头结点,当单向循环列表为空时,head->next == head
快捷缩进 n= 缩进n行
链式栈
插入和删除操作均再头部进行,链表尾部就是栈底,栈顶指着就是链表的头指针
#define MAX 10
typedef int datatype_t;
typedef struct Node {
datatype_t data;
struct Node* next;
}linkednode_t;
typedef struct{
int size;
linkednode_t* top;
}linkedstack_t;
入栈
出栈
在链式栈中,next
通常用于指向下一个节点,而 top
则用于指示栈顶元素
next
指针用于构建链表结构,将各个节点连接起来。每个节点通过 next
指针指向下一个节点,形成一个链表。
top
则是一个特殊的指针,它始终指向栈顶的那个节点。当进行入栈操作时,新节点会成为新的栈顶,top
指向这个新节点;出栈操作时,top
指向原栈顶节点的下一个节点。
链式队列
插入操作再队尾进行,删除操作再队头进行,由队头和队尾指针控制队列的操作
入队操作
出队操作
出队完成后如果队列为空,则需要强制将front的值赋给tail
typedef struct的加typedef好处
- 提高代码的可读性和可维护性:
- 给结构体一个更具描述性和简洁的名称,使得代码更易于理解其用途
- 当结构体的定义较长或复杂时,使用简短的别名可以使代码更清晰。
树结构
二叉树:任意一个结点的子节点个数最多是两个,二叉树不一定是满的
完全二叉树:按照树的结构依次将元素排列
前序遍历:当左右
中序遍历:左当右
后序遍历:左右当
层序遍历:按层级遍历,从左到右