数据结构学习记录_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位小数;
posted @ 2019-02-27 17:09  Bran_don  阅读(130)  评论(0编辑  收藏  举报