步骤
1、在创建链表前首先要定义一个结构体,此结构体包含数据域和指针域,数据域和指针域均可以有多个,该结构体实际上就是结点(Node);
2、链表的建立至少需要三个结点,头结点、尾结点、待插入结点,这里分别用tHead、tLast、tTemp来表示三个结点;
3、头结点作为链表的标识,在链表创建时首先要给tHead分配空间(使用malloc申请空间);
4、链表每插入新结点tTemp时,都需要给新结点分配一个新的空间;
5、值得注意的是,建立第一个结点时,直接让tHead指向tTemp,并让tLast指向tHead即可,此时三个结点的关系如图所示,tHead和tLast此时都为第一个结点;
6、第一个结点创建完成后,新增结点tTemp直接挂在tLast后面,即tLast->next = tTemp,再将tLast指向tTemp(这一步操作就是将新增的tTemp变成了链表的表尾),最后将tLast->next指向NULL即可;
C语言实现代码如下:
1 #include <stdio.h> 2 #include <malloc.h> 3 4 typedef struct Node 5 { 6 int Value; 7 struct Node *Next; 8 }Node_t; 9 10 11 void LinkedListCreate(void) 12 { 13 int tNum = 0; 14 int tValue = 0; 15 Node_t *tTemp = NULL;//待插入节点 16 Node_t *tHead = NULL;//头结点 17 Node_t *tLast = NULL;//尾结点 18 19 printf("请输入新建链表节点数:"); 20 scanf("%d",&tNum); 21 22 while (tNum) 23 { 24 tTemp = (Node_t*)malloc(sizeof(struct Node));//为结点分配空间 25 printf("请输入第一个节点数据内容(阿拉伯数字):"); 26 scanf("%d",&tValue); 27 28 tTemp->Value = tValue; 29 30 if (tHead == NULL) 31 { 32 tHead = tTemp; 33 tLast = tHead; 34 }else{ 35 tLast->Next = tTemp; 36 tLast = tTemp; 37 tLast->Next = NULL; 38 /* code */ 39 } 40 tNum--; 41 /* code */ 42 } 43 printf("节点数据内容为:"); 44 while (tHead) 45 { 46 printf("%d ",tHead->Value); 47 tHead = tHead->Next; 48 /* code */ 49 } 50 } 51 52 53 void main() 54 { 55 LinkedListCreate(); 56 }