忘了就来看看。。。
1、线性表:
(1)
线性表
静态分配的顺序表、动态分配的顺序表
单链表、双链表
循环单链表、循环双链表
静态链表
头指针、尾指针、头节点
LinkList L; InitList(&L); DestroyList(L);
(2)
typedef structSqList {int data[50];intlength;
}SqList;
typedef structSqList {int*data;intmaxSize;intlength;
}SqList;
typedef structNode {intdata;struct Node*next;
}Node,*LinkList;
typedef structNode {intdata;struct Node* prior, *next;
}Node,*LinkList;
typedef structNode {intdata;intnext;
}LinkList[50];
2、栈
栈
顺序栈、共享栈、链式栈、卡特兰数
typedef structSqStack {int data[50];int top; //-1
}SqStack;
typedef structSharedStack {int data[50];int top1; //-1
int top2; //50
}SharedStack;
typedef structNode {intdata;struct Node*next;
}Node,*LinkStack;
卡特兰数:h(n)=C(2n,n)/(n+1),等于n个元素依次进栈的出站序列的个数。
3、队列
队列、输出受限的双端队列、输入受限的双端队列
循环队列,链式队列
typedef structSqQueue {int data[50];intfront;intrear;
}SqQueue;
typedef structNode {intdata;struct Node*next;
}Node;
typedefstructLinkQueue {
Node* front, *rear;
}LinkQueue;
4、矩阵
特殊矩阵、对称矩阵、三角矩阵、三对角矩阵、
稀疏矩阵、三元组顺序表、十字链表、邻接表、伪地址表示法
typedef structTriple {inti;intj;inte;
}Triple;
typedefstructSMatrix {
Triple data[50];intmu, nu, tu;
}SMatrix;
typedef structNode {inti, j;inte;struct Node* right, *down;
}Node;
typedefstruct{
Node** rhead, **chead;intmu, nu, tu;
}CrossList;
typedef structNode {intj;inte;struct Node*right;
}Node;
typedefstruct{
Node**rhead;intmu, nu, tu;
};
typedef structPair {intloc;inte;
}Pair;
typedefstruct{
Pair* data[50];intmu, tu, nu;
}Matrix;
5、栈的应用
(1)表达式
中缀表达式:把运算符作为中缀,比如:1+2
前缀表达式:把运算符作为前缀,比如:+12
后缀表达式:把运算符作为后缀,比如:12+
复杂的,比如2*(1+3) *2+13 213+*
6、二叉树
二叉树、完全二叉树、满二叉树
顺序存储二叉树、二叉链表、三叉链表、线索二叉树、先序线索二叉树、中序线索二叉树、后序线索二叉树