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外面打印出来
