链表的头插法和尾插法
Posted whtmomo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表的头插法和尾插法相关的知识,希望对你有一定的参考价值。
链表的头插法和尾插法
本文的链表均是带头结点的链表。
链表可以说是最简单的链式结构,在C语言中,通常用结构体封装其数据域及指针域作为一个结点。
今天我们说的是链表结点的构造方式以及插入方式。
尾插法
1 //尾插法 2 3 void createlistR(LNode *&C,int a[],int n){ 4 LNode *s,*r; 5 int i; 6 C = (LNode*)malloc(sizeof(LNode)); 7 C->next = NULL; 8 r = C; 9 for(i = 0;i<n;i++){ 10 s = (LNode*)malloc(sizeof(LNode)); 11 s->data = a[i]; 12 r->next = s; 13 r = r->next; 14 } 15 r->next = NULL; 16 }
即将节点依次接入链表末尾,称为尾插法
头插法
为什么要把头插法放在尾插法后面来讲呢,头插法顾名思义,即每个节点都插入到头部。称为头插法。举个例子
已知链表L,头插法插入A,B,C
则有下列形式
L->A
L->B->A
L->C->B->A
我们可以发现,运用头插法建立链表,顺序是相反的。下面给出具体代码实现
1 //链表头插法 2 void creatlistF(LNode *&C,int a[],int n){ 3 LNode *s; 4 int i; 5 C = (LNode*)malloc(sizeof(LNode)); 6 C->next = NULL; 7 for(i = 0;i<n;i++){ 8 s = (LNode*)malloc(sizeof(LNode)); 9 s->data = a[i]; 10 11 s->next = C->next; // *** 12 C->next = s; 13 } 14 } 15 16 /* 讲解 ***内容 17 为什么要 s->next = C->next; 18 解:因为是头插法,C指向的头结点是不动的,由题意知,此时C->next = NULL 19
希望对大家有所帮助~
以上是关于链表的头插法和尾插法的主要内容,如果未能解决你的问题,请参考以下文章