今天主要学习了栈的习题和队列的链表实现
1、栈具有栈顶和栈底,栈顶是数据的进入和输出端,top是栈顶的上一位,栈的实现可以用链表和数组来实现,但是链表的尾插和尾删复杂度过高,所以用数组更好。
2、习题:有效的括号如:() {()} {([])}
思想:
利用栈的先进后出的特性,首先遍历字符串,遇到左边的括号就进栈,然后遇到右边的就比较,比喻遇到'}',就把栈顶元素读出来,如果一样,依次读取栈中元素来和字符串比较,如果进栈的和字符串剩下的都是左右关系,那就是true,需要注意,比较结束时,栈中元素得为空,且比较开始时,栈不能为空,这些都得注意。

3、队列
队列具有先进先出的特点,具有队头和队尾,可以用数组和链表来实现,但是数组的头删时间复杂度过高,所以不适用,因此选用链表更加合适。
链表来实现队列,需要2个结构体:
一是链表的结构,
struct QueueNode
{
int data;
struct QueueNode next;
};
二是队列的结构
struct Queue
{
struct stackNode
Front;
struct stackNode* Back;
};

©著作权归作者所有:来自51CTO博客作者我要进大厂的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-
  2. C语言通过定义结构体UCI读写配置文件
  3. 五款Python图像处理工具!Python入门分享!
  4. 话说 AQS
  5. 2021-03-08:在一个数组中,任何一个前面的数a,和任何一个后面的数b,如
  6. 面试懵了:StringBuilder为什么线程不安全
  7. Kafka评传——从kafka的消息生命周期引出的沉思
  8. 从数组中移除元素,要求时间复杂度为O(N)空间复杂度为O(1)
  9. 顺序表

随机推荐

  1. Android/java 多线程(六)-AsyncTask使用
  2. ios/android 程序员
  3. View基础知识总结
  4. android的init.rc文件的语法
  5. 解决WARNING: APP_PLATFORM android-19 i
  6. Android日志系统分析之日志设备驱动程序
  7. Android应用程序开发入门
  8. Android用户界面与布局
  9. Android消息处理机制笔记
  10. android底部栏中间按钮突出