链表其实是线性表的链接存储方式,这种方式下的存储单元可以是连续的,也可以是不连续的。这里我们主要讨论链表的尾插法,头插法和尾插法基本类似。坐标为您分享。
操作方法
(01)一、链表的建立分为带头结点的头插法和带头结点的尾插法,第一种方法插入顺序和输出顺序是相反的。第二种方法插入顺序和输出顺序是一致的。这里我们主要介绍尾插法,头插法基本类似。
(02)二、首先对头文件、数据结构、链表结点结构等进行声明。
(03)#include <stdio.h>#include <stdlib.h>#define null 0typedef struct snode{char *name;char *no;int score[5];}typedefdata;typedef struct node{typedefdata data;struct node *next;}linklist;
(04)三、首先介绍带头文件的尾插法建立链表。/*尾插法建立带头结点的单链表*/linklist *insert_new(){char flag;int x;char *na;char *num;int grade[5];linklist *head,*rear,*p;head = (struct node*)malloc(sizeof(linklist));//头节点的空间分配rear = head;//头尾相连进行初始化dowhile(flag != 'q');rear->next = null;return (head);}/*尾插法建立带头结点的单链表*/
(05)四、头插法建立链表。头插法其实与尾插法的最大不同是每次新增的节点都是从head处添加,需要修改的就是for(x=0;x<5;x++)p->e[x] = grade[x];p->next = head->next;head->next = p;printf("nn continue?q for quit!");
(06)五、主函数的编写。int main(){insert_new();return 0;}
(07)六、测试我们只测试尾插法。
特别提示
链表的建立并不复杂,需要注意的是内存申请的语句形式p = (struct node*)malloc(sizeof(linklist));