本文主要是介绍实现了对单链表的反转,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package data;
/**
* @author Babulakaka
* @create 2021-06-13 9:09
*/
public class Reversion3{
public static void main(String[] args) {
SingleLinkedList singleLinkedList = new SingleLinkedList();
singleLinkedList.addNode("q",1);
singleLinkedList.addNode("w",2);
singleLinkedList.addNode("e",3);
singleLinkedList.addNode("r",4);
singleLinkedList.show();
singleLinkedList.reverse(singleLinkedList.head);
singleLinkedList.show();
}
}
class Node{
public String name;//节点属性
public int age;//节点属性
public Node next;//指向下一个节点
//构造器
public Node(){
}
public Node(String name){
this.name=name;
}
public Node(String name,int age){
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "姓名:" + name+ " " + "年龄:"+ age;
}
}
class SingleLinkedList {
Node head = new Node();//头结点
public static int COUNTER;//记录节点的编号
//节点的添加
public void addNode(String name, int age) {
Node node = new Node(name, age);//给新节点赋初始属性
Node temp = head;//头结点的dog,方便遍历,查询等操作
//首先查看该节点是否存在于该链表中
while (true) {
if (temp.name == node.name && temp.age == node.age) {
System.out.println("当前输入的节点已经存在与该链表中");
return;
}
if (temp.next == null) {//此时退出循环的temp就是当前链表的最后一个节点
break;
}
temp = temp.next;
}
//遍历链表找到位于链表的最后的节点
while (true) {
if (temp.next == null) {//此时退出循环的temp就是当前链表的最后一个节点
break;
}
temp = temp.next;
}
temp.next = node;//新节点加入当前链表
System.out.println("加入成功");
}
//节点的删除,根据节点的属性删除节点;前提是该节点不允许出现相同属性的节点。
public void deleteNode(String name, int age) {
Node temp = head;//头结点的dog,方便遍历,查询等操作
Node node = new Node(name, age);
//判断链表中个是否有节点
if (head.next == null) {
System.out.println("当前链表没有节点,无法删除");
return;
}
while (true) {
if (temp.next == null) {//此时退出循环的temp就是当前链表的最后一个节点
break;
}
//寻找要删除的元素,并且将其删除
if (temp.next.name.equals(node.name) && temp.next.age == node.age) {
temp.next = node.next;
System.out.println("删除成功节点:" + node.name);
return;
}
temp = temp.next;
}
System.out.println("没有找到要删除的元素");
}
//显示当前链表
public void show() {
Node temp = head;//头结点的dog,方便遍历,查询等操作
if (temp.next == null) {
System.out.println("当前链表没有元素");
return;
}
while (true) {
temp = temp.next;
System.out.println(temp.toString());
if (temp.next == null) {
break;
}
}
}
public void reverse(Node head){
Node reverseHead= new Node();
Node cur = head.next;
Node next = null;
while (cur!=null){
next= cur.next;
cur.next=reverseHead.next;
reverseHead.next=cur;
cur=next;
}
head.next=reverseHead.next;
}
}
这篇关于实现了对单链表的反转的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!