Linux-数据结构-双向链表与栈
一.双向链表剩余操作
【1】定义函数指针类型,查找不同类型的数据
【2】删除
【3】修改
【4】销毁
传入二级指针的意义:
二.栈
【1】栈的基本概念
栈是限定仅在表尾进行插入和删除操作的线性表。
先进后出、后进先出
栈顶:允许操作的一端
栈底:不允许操作的一端
入栈,出栈。
顺序栈 链式栈
30+2\5
1.创建 CreateSeqStack
2.销毁 DestroySeqStack
3.判断是否为空栈 IsEmptySeqStack
4.判断是否为满栈 IsFullSeqStack
5.压栈 PushSeqStack
6.出栈 PopSeqStack
【2】seqstack.h
【3】seqstack.c
(1)创建
与链表相同需要规定栈的大小
(2)销毁
这里也要注意释放顺序
(3)入栈
top是指下一个要插入的地方
(4)出栈
删除栈顶的元素
(5)判断是否为空/满
(6)获取栈顶元素(打印栈元素)和大小
三.栈的练习1
练习:判断(){}【】是否匹配
【1】.h
sym用来存储左符号,'[','{','('
linenum用来记录错误的行数
colnum用来记录错误的列数
【2】主函数
fp读取文件内容,fgets读取每一行的内容,num用来记录行数
循环结束时,栈为空,文件正确,没空就是左符号出现问题
【3】do_check函数
定义data用于存储左符号,并记录它的行列号
获取到右符号时
1.如果没有左符号,则此右符号出错
2.如果左右符号匹配,则将左符号移除
3.如果不匹配,右符号出错,且左符号在while外面打印出来