数据结构学习记录_2019.02.26
- 堆栈:具有一定的约束,只在一端插入和删除,先入后出。
- 堆栈的常见5项操作:
(1)生成空堆栈,CreatStack( );
(2)判断堆栈S是否已满
(3)push,Push(S,A);Push(S,B);
(4)判断堆栈元素是否为空,IsEmpty(S);
(5)pop,x=Pop(S);x=Pop(S);
- 堆栈的顺序存储结构:通常由一个一维数组和一个记录栈顶元素位置的变量组成;
- 若数组和栈顶元素位置标志不组成结构,直接传入函数,那么因为栈顶元素位置top变量因为是局部变量,只能在函数内使用,因此不会被修改;因此宜将结构作为参数传入函数进行操作;
- 堆栈的链式存储实现:在链首进行插入和删除操作;
- 函数的其他应用:
(1)函数调用及递归实现
(2)深度优先搜索
(3)回溯算法
(4)。。。
- 队列(Queue):具有一定约束的线性表---只能在一端插入,而在另一端删除;(入队列、出队列)
- 先进先出:FIFO
- 队列的常见5项操作:
(1)生成长度为MaxSize的空队列;
(2)判断队列Q是否已满;
(3)插入;
(4)判断是否为空;
(5)将队头元素从队列中删除并返回;
-
队列的顺序存储:一维数组+int front +int rear
-
循环队列:节省空间
-
队列的链式存储:(链首做插入和删除都方便;链尾做插入没问题,但删除后不知道上一个在哪里)front在链首做删除,rear在链尾做插入)
-
用两个堆栈实现一个队列:push a;pop a;push b; pop b;
-
多项式的表示
-
数组实现多项式:动态数组(事先知道数组的大小)(较好的实现方法)
-
链表实现多项式:
-
typedef struct PolyNode *Polynomial;//定义结构指针Polynomial ; struct PolyNode { int coef; int expon; Polynomial link; };
- 程序框架搭建
int main()
{
读入多项式;
乘法运算并输出;
加法运算并输出;
return 0;
}
int main()
{
Polynomial P1,P2,PP,PS;
P1=ReadPoly();
P2=ReadPoly();
PP=Mult(P1,P2);
PrintPoly(PP);
PS=ADD(P1,P2);
PrintPoly(Ps);
return 0;
}
- %03d:输出3位格式,不足3位则在左边补0;
- %.1lf:输出四舍五入保留1位小数;
hello world~