一.双向链表剩余操作
【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外面打印出来
