数据结构的分析

1 队列

队列采用先进先出策略的集合类型,如图所示

1.1 队列的入队演示

如图将 89 添加到队列中,采用的是 : 在队列队尾添加,整个事件时间复杂度为O(1)

1.2 队列的出队演示

当队列收到出队的命令后,会将指针指向head,从而移除head的值,原先head值指向的下一个值变为head,整个事件时间复杂度为 O(1)
    注意:java中还有先进先出队列,策略和基本队列相反,和下面的栈的策略相同

1.3 队列的总结,队列是采用先进先出的策略,添加元素时是在队尾添加,出队时是在队头移除或出队

2 链表

2.1 链表插入策略的演示

2.1.1 头插

2.1.2 尾插

2.1.3 中间任意部位插入

      任意部位的插入首先要指定一个插入点,在插入过程中会先遍历插入点前面的元素,找到插入点元素  
    之后在修改插入点元素的指针,让其指向新增元素  

3 栈

栈(stack)是操作受限的线性表,限定元素的插入和删除运算只能在表的一端进行,通常把进行插入删除的一端称作栈顶(top)  
另一端称为栈底(bottom)     

3.1 栈的五种运算

  1. 置空栈setnull(s):将栈s设置成空栈,即不管栈的原来状态如何一律置为空栈;
  2. 判断栈是否为空empty(s):返回一个布尔值,当栈为空时返回1,否则返回返回0;
  3. 进栈push(s,x):把元素x压入栈s中,成为新的栈顶元素;
  4. 出栈pop(s):该操作从栈顶弹出栈顶元素并返回,栈为空时返回NULL;
  5. 读栈顶元素gettop(s):返回栈顶元素,该操作栈的状态不变;

栈与队列的总结

栈可以形象的比喻为一个瓶子,先进的元素只能从瓶口进,然后往瓶底走,出的时候也只能从瓶口出,而后面进的元素往往先出

队列可以看成一条管道,该管道从bottom入,top出