- #include <stdio.h>
- #include <malloc.h>
- typedef struct ListNodeStruct
- {
- int number;
- char *name;
- int score;//学生的信息
- struct ListNodeStruct *ago;
- struct ListNodeStruct *next;//链表的前后节点信息
- }ListNode;
- typedef struct
- {
- ListNode *start;
- ListNode *end;
- }List;
- /************************************************************************/
- /* 创建链表后,要对链表初始化
- InitList()函数对链表初始化
- CreatNode()这个函数用来创建节点
- AddNode()用来将新创建的链表加入到链表中去 */
- /************************************************************************/
- void InitList(List *);
- ListNode *CreatNode();
- void AddNode(List *,ListNode *);
- void pull(ListNode *node,int n,char *mz,int sc);
- void main()
- {
- List student;
- ListNode *new_node,*new_node_pre;
- InitList(&student);
- //初始化新创建的节点
- new_node=CreatNode();
- pull(new_node,1120,"huangjin",80);
- new_node->ago=NULL;
- new_node->next=NULL;
- AddNode(&student,new_node);
- new_node_pre=new_node;//将新创建的节点的值进行暂存
- new_node=CreatNode();
- pull(new_node,1121,"litao",85);
- new_node->ago=new_node_pre;
- (new_node_pre)->next=new_node;
- new_node->next=NULL;
- AddNode(&student,new_node);
- new_node_pre=new_node;
- new_node=CreatNode();
- pull(new_node,1122,"xiaoping",90);
- new_node->ago=new_node_pre;
- (new_node_pre)->next=new_node;
- new_node->next=NULL;
- AddNode(&student,new_node);
- printf("%d/n",(student.start)->next->number);
- }
- void InitList(List *stu)
- {
- stu->start=NULL;
- stu->end=NULL;
- }
- ListNode *CreatNode()
- {
- ListNode *get_node;
- if ((get_node=(ListNode *)malloc(sizeof(ListNode)))==NULL)
- {
- printf("Creat_Failed");
- exit(1);
- }
- return get_node;
- }
- void AddNode(List *stu,ListNode *node)
- {
- if (node->ago==NULL)
- {
- stu->start=node;
- stu->end=node;
- }//说明是第一个新创建的节点
- else
- {
- stu->end=node;
- }
- }
- void pull(ListNode *node,int n,char *mz,int sc)
- {
- node->number=n;
- node->name=mz;
- node->score=sc;
- }
初识链表,凭着自己的想法,写下的第一个程序,创建三个节点的链表,包含三个学生信息:学号,姓名和分数。调试过程中出现的问题,是没有及时更新节点的前驱和后继节点。
运行通过,但是仍有很多漏洞,可能会内存泄露的问题,欢迎高手多多指教!