本篇是C语言最后一篇,接下来我将去学习单片机,“如何仿制一份电开测板程序”
首先是大致框架,我们的学生需要具有一些什么信息
标号,姓名,语文,数学,英语,总分这六项
我们需要对这些数据做什么
创造,查询,打印,替换,删除
那么问题就来了,我们可以使用静态或动态
然而,静态存储数据会造成空间浪费
并且删除时改动太大
所以我们选择动态链表
也就是说它是一个链式表,进行删除操作时,只需将旧链断开,形成新链,改一下标号就行了
·也就是说,如果要建立链表的话在结构体中加入一个结构体指针,就可以构造成为一个单向链表
将结构体1中的结构体指针指向结构体2,2中指3.。。。最后一个指向NULL(空)
如图,结构体与函数的声明
然后是一些全局变量(因为我的函数都是不带参函数,所以我制作的链表也是全局可调用的)
其中n为链表长度,b为开关变量(一个容错机制),c为临时变量(因为需要进行交互式操作)
然后,*p1,*p2为一组结构体指针用于创建链表*s1*,s2为另一组用来进行查询删除等操作
而P0,就是整个链表的头结点就像main()是整个程序运行的起始·一样
声明完所需变量
我们需要完成第一个任务
制作密码系统
如图
先声明了一些临时变量来存储一些输入数据
然后用按位校验验证密码
如果输入错误则err+1并进行提示
达三次自动退出大循环while
如果密码正确则执行内部循环
如图:
用开关语句进行选择其中case2-5中的(b==1)是防止链表为空时进行读/删操作
system("pause");
这句话是给操作系统下达指令暂停(我也是偶尔发现的,下方"cls"为清屏指令)
至此,我们完成了函数选择(功能选择)
接下来就是分块实现
在此,我只说明一下make()与del()其他的功能实现与之类似,不再赘述
如图:
b!=1则说明链表为空
此时P指针组应归位至零结点
并开始创建一个节点,使b=1
使p1
开辟一个空间,并让0结点与之连接
此节点现在为头结点
让n+1(链表长度加1)
输入数据
将头结点中的指针放空(若再进行创造,则此指针指向2结点,以此类推)
del()如图
将总结点数打印,并获取输入,验证其是否合法
如果合法,将指针定位至目标节点与目标节点前一个节点(用while循环)
如果是最后一个节点则直接进行删除并将b置0
如果不是最后一个节点
建立目标节点前后节点之间的联系,并将目标节点释放
返回
(PS:附件中有程序,仅供参考)
|