王道数据结构 (2) 单链表 尾插法
第一步: s 是新创建的节点 s->next 表示 s 是最后一个
s->next = NULL;
第二步: r 是原来的链表 r->next = s 表示 连接 s
r->next = s;
第3步: r 指向新的表尾节点
r= s;
代码:
/*单链表(含头结点)*/ #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LNode{ ElemType data; //数据域 struct LNode *next; // 指针域 }LNode,*LinkList; LinkList CreateFootList(ElemType a[], int n); //头插法建立单链表 void OutputList(LinkList L); void main(){ LinkList L = NULL; ElemType a[] = { 1, 2, 3, 4, 5 }; ElemType e; L = CreateFootList(a, 5); OutputList(L); } LinkList CreateFootList(ElemType a[], int n){ //头插法建立单链表 int i; LinkList L = NULL, s = NULL, r= NULL;; L = (LNode*)malloc(sizeof(LNode)); L->next = NULL; r = L; for (i = 0; i < n; i++){ s = (LNode*)malloc(sizeof(LNode)); // 创建新节点 s->data = a[i]; s->next = NULL; r->next = s; r= s; } return L; } // 输出所有链表的思路: // 1.让头节点的next 指向下一个节点 // 2. 做一个循环 当超出时打断循环 循环内的时候 p 指向下一个 p 是 现在的节点 p=p-> next 节点会向下一个移动 void OutputList(LinkList L){ //输出单链表全部元素 LinkList p = L->next; while (p){ printf("%d ", p->data); p = p->next; } printf("\n"); }
输出:
越努力越幸运