码迷,mamicode.com
首页 > 其他好文 > 详细

链表的头插法和尾插法

时间:2019-09-12 21:16:35      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:malloc   sizeof   最简   int   eof   为什么   creat   ++   一个   

链表的头插法和尾插法

本文的链表均是带头结点的链表。

链表可以说是最简单的链式结构,在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     

 希望对大家有所帮助~

链表的头插法和尾插法

标签:malloc   sizeof   最简   int   eof   为什么   creat   ++   一个   

原文地址:https://www.cnblogs.com/whtmomo/p/11514981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!