C 语言实现链表需要先定义链表节点结构体,然后编写相关的链表操作函数,包括插入、删除、查找等。链表是一种动态数据结构,需要根据链表的长度进行扩容或缩小,以保证链表的正常运行。在实现链表时,需要考虑到节点的插入顺序,以免出现不必要的数据冲突。同时,为了避免内存浪费,需要及时释放不再使用的链表节点内存。
打开电脑桌面的DEV C++软件,输入组合键"Ctrl+N"新建一个空白头文件;
并输入以下代码: //头文件jiafa #ifndef __HARDWARE_H__ #...
按下组合键"Ctrl+S"输入名称jiafa.h并保存到指定目录;
再按下组合键"Ctrl+N"新建一个空白文件;
list实现的实际上是双向链表,所以叫它doubly-linked list也许更好。
其次,新的节点生成,会通过new或malloc来申请空间,其返回值是个指针,这时一般要用指针变量p2来接收这个指针,然后将链表尾节点的next赋值成这个p2的内容,p2指向的next再赋值成NULL成为尾节点。最后,如果需要在链表中插入,就需要一个指针p1指向当前节点,另一个p2指向当前节点之后的节点,然后将p1的next赋值成新节点指针,新节点指针的next赋值成p2,完成插入。总体来说,所谓p1和p2是临时辅助性的变量,是为方便使用的中间变量,这个从方便出发申请的工作变量也无需节省。
这个使用一个数据库来做的话会好一点
不过要求使用文件的话也是可以的
首先要创建一个用于保存用户信息的文件(用户名和密码等信息)
程序运行时可以将该文件数据读取到一个链表中
注册时通过查找该链表中是否有对应用户名来确定是否会重复
注册成功后可以为用户自动生成一个保存数据的文件名
然后该用户的日程信息保存在该文件名所指向的文件中
登陆时只要打开该文件并将数据读取到一个链表中进行操作即可
如果代码不想自己写的话
算法的核心就是reverse函数,其它的都是辅助建立链表和输出链表的。
从数据结构的定义来看这是一个带头节点的链表。要弄的十分明白你要耐心点画图看看。我简单的说下思路:
p=head; //p最开始指向头结点
s=p->next; //s最开始指向第一个节点
while(s->next!=NULL)//只要没有到最后一个元素就继续。最后一个元素的next肯定为NULL
t=s->next; //用t指向s后面的那个元素
s->next=p; //把s指向她前面那个,这个时候就实现了逆向了。而且是就地逆向。元素都没有动的
s->next=p; //当最后一个的时候,还是要指向她的前一个。
head->next=s;//s是逆序前的最后一个,逆序后是第一个,所以用头指向他
画个图好好体会下,楼主!