一、栈(Stack)
1. 顺序结构
- 结构图:(图中栈顶元素是80)
- 类型定义:😄
typedef struct {
ElemType *elem;//存储空间的基址
int top;//栈顶元素的下一个位置,简称栈顶位标
int size;//当前分配的存储容量
int increment;//扩容时,增加的存储容量
}SqStack; //顺序栈
2. 链式结构
- 结构图:
- 类型定义:😃
typedef struct {
ElemType data;//数据域
struct LsNode *next;//指针域
}LSNode,*LStack; //结点和链栈
二、队列(Queue)
1. 顺序结构
- 结构图:
- 类型定义:
typedef struct {
ElemType *elem;//存储空间的基址
int front;//队头位标
int rear;//队尾位标,指向队尾元素的下一个位置
int maxSize;//存储容量
}SqQueue;
- 循环队列的实现:😗
Q.rear = (Q.rear+1)%Q.maxSize;
- 队空和队满:😅
//队空
Q.front == Q.rear;
//队满
Q.front == (Q.rear+1)%Q.maxSize;
2. 链式结构
- 结构图:
- 类型定义:
typedef struct LQNode {
ElemType data;
struct LQNode *next;
}LQNode,*QueuePtr;//结点及指针类型
typedef struct {
QueuePtr front;
QueuePtr rear;
}LQueue;//链队列
三、线性表(Linked List)
1. 顺序结构
- 结构图:
- 类型定义:😆
typedef struct {
ElemType *elem;//存储空间的基址
int length;//当前长度
int size;//当前容量
int increment;//扩容的增量
}SqList; //顺序表
2. 链式结构
- 结构图:
- 类型定义:😊
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;//结点和链表