java链表尾插法_单链表的头插法和尾插法

本文介绍了Java中单链表的头插法和尾插法。头插法创建的链表顺序与输入数据相反,而尾插法则保持输入顺序。文章提供了详细的代码实现,包括链表节点类和操作类,并给出了C语言的尾插法代码示例。
摘要由CSDN通过智能技术生成

头插法

简介

头插法建立单链表的算法虽然简单,但生成的链表中结点的次序和输入数据的顺序不一致。若希望两者次序一致,可采用尾插法。该方法是将新结点插入到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点,如图所示。

f34aacb8434e

头插法图解.jpg

代码实现

//链表节点类实现

public class Node {

/**

* 下一个节点

*/

Node next;

/**

* 节点存储的数据

*/

T val;

/**

*

* @param val data域

* @param next 指针域

*/

Node(T val,Node next){

this.val=val;

this.next=next;

}

boolean hasNext(){

return this.next!=null;

}

}

//单链表的操作类

public class LinearList {

//链表头结点

Node head;

public LinearList(){

//空链表

this.head=new Node(null,null);

}

//头插法 链表 指针指向最this.head

void add(T val){

this.head=new Node(val,this.head);

}

public static void main(String[] args) {

LinearList list = new LinearList();

list.add(1);

list.add(2);

list.add(3);

list.add(4);

list.add(5);

Node head = list.head;

while (head.hasNext()) {

System.out.println(head.val);

head = head.next;

}

}

}

尾插法

介绍

头插法建立单链表的算法虽然简单,但生成的链表中结点的次序和输入数据的顺序不一致。若希望两者次序一致,可采用尾插法。该方法是将新结点插入到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点,如图所示。

f34aacb8434e

尾插法.jpg

C语言代码

LinkList CreatList2(LinkList &L){

//从表头到表尾正向建立单链表L,每次均在表尾插入元素

int x; // 设元素类型为整型

L=(LinkList)malloc(sizeof(LNode));

LNode *s, *r=L; //r 为表尾指针

scanf ("%d", &x); //输入结点的值

while (x!=9999) { //输入 9999 表示结束

s=(LNode *)malloc(sizeof(LNode));

s->data=x;

r->next=s;

r=s; //r指向新的表尾结点

scanf ("%d", &x);

}

r->next = NULL; //尾结点指针置空

return L;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值