链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」

链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」注意:由于循环链表没有NULL指针,故涉及遍历操作时,其终止条件就不再像非循环链表那样判断p或pnext是否为空,而是判断它们是否等于头指针)循环链表:是一种头尾相接的链表(即:表中最后一

🍓个人主页:bit.. 

🍒系列专栏:Linux(Ubuntu)入门必看   C语言刷题      数据结构与算法

目录

一.头插法

二.尾插法(后插法)

三.循环链表


一.头插法

建立单链表;头插法——元素插入在链表头部,也叫前插法。

算法步骤:

  1. 从一个空表开始,重复读入数据元素。
  2. 生成新结点,将读入数据存放到新结点的数据域中。
  3. 从最后一个结点开始,依次将各结点插入到链表的前端。

例如:建立链表L 

链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」

 算法描述:

void CreataList_H(LinkList &L,int n){
    L=new LNode;
    L-->next=NULL;    //先建立一个带头结点的单链表
for(i=n;i>0;--i){
    p=new LNode;  //生成新结点 p=(LNode*)malloc(sizeof(LNode));
    cin>>p-->data; //输入元素值 scanfs(&p-->data);
    p-->next=L-->next; //插入到头表
    L-->next=p;
  }
}//Create List_H

二.尾插法(后插法)

算法步骤:

从一个空表L开始,将新结点逐个插入到链表的尾部,尾指针r指向链表的为节点。

初始时,r同L均指向头节点,每读入一个数据元素则申请一个新结点,将新结点插入到尾部结点后,r指向新结点。链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」

 算法描述:

//正位序输入n个元素的值,建立带头节点的单链表L
void CreateList_R(LinkList &L,int n){
    L=new LNode;
    L-->next=NULL;
    r=L; //尾指针r指向头结点
for(i=0;i<n;++i){
    p=new LNode;
    cin>>p-->data; //生成新结点,输入元素的值
    p-->next=NULL;
    r-->next=p; //插入到表尾
    r=p;  //r指向新的尾结点
    }
}//LreateList_R

三.循环链表

        循环链表:是一种头尾相接的链表(即:表中最后一个结点的指针域指向头结点,整个链表形成一个环状)

链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」

 优点:

        从表中任意结点出发均可找到表中其他结点。

注意:由于循环链表没有NULL指针,故涉及遍历操作时,其终止条件就不再像非循环链表那样判断p或p–>next是否为空,而是判断它们是否等于头指针)

循环链表的写发与单链表类似 只需改变循环条件

单链表循环条件:

p!=NULL;

p–>next!=NULL;

单循环链表  循环条件:

p!=L;

p–>next!=L;

例如:带尾指针循环链表的合并 

链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」

操作:

  1. Tb表头连接到Ta表尾
  2. Tb头节点释放
  3. 修改指针
LinkList connect(LinkList Ta,LinkList Tb){
//假设Ta,Tb是非空单循环链表
    p=Ta-->next;
    Ta-->next=Tb-->next-->next;
    delete Tb-->next;
    Tb-->next=p;
    return Tb;
}

今天的文章链表头插法和尾插法的示意图和相应的语句是什么?_单链表的头插法和尾插法「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87001.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注