線性表
1. 順序存儲結構
define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList
2. 鏈式存儲結構
單鏈表
typedef struct Node
{
Elemtype data;
struct Node *next;
}Node;
typedef struct Node *LinkList; //定義LinkList *類型
3. 棧
typedef int SElemType;
typedef struct
{
SElemType data[MAXSIZE];
int top; // 棧頂指針,指向棧頂元素,空棧時爲-1
}SqStack;
棧的操作,出棧(pop)/入棧(push)
棧的應用:
- 遞歸,斐波那契數
- 四則運算表達式求值
4. 隊列
隊列的順序存儲結構
typedef struct
{
QElemType data[MAXSIZE];
int front; // 頭指針指向隊列頭元素
int rear; // 尾指針,如果隊列不爲空,指向隊尾元素的下一個
}
當front等於rear時隊列爲空
隊列的鏈式存儲結構
typedef int QElemType;
typedef struct QNode // 節點結構
{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct // 隊列的鏈表結構
{
QueuePtr front,rear; // 隊頭、隊尾指針
}LinkQueue;
隊列的隊頭指針指向隊列的頭節點,隊尾指針指向終端節點。