「java链表的输出」java链表操作

博主:adminadmin 2022-12-11 08:21:07 73

本篇文章给大家谈谈java链表的输出,以及java链表操作对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java单链表遍历,最后会输出一个0,这个零是什么,头指针的引用吗

单链表带头结点的遍历,如果把temp!=null改成temp.next!=null遍历就正常了,但是去掉.next就会多出一个0。这个0是一个未经初始化的内存中“残存”的数字,这一次是零,可能在,下一次运行的时候,里面出现的数字就可能不是0,而是其他不规则的数字。

java 怎么把链表(linkedList) 的内容输出

toString()方法是从Object类继承过来的方法,你需要在SortedTopicList 里重写toString()方法,方法里 根据len做循环,调用你写的get(i)方法输出每一个

java 链表的输出问题

几位的回答都比较清楚了,我想另外说点问题

你本就不应该加入‘表尾’这个属性,在数据结构中链表的特点就是能用一个地址带一个长串数据链的,不用这个属性的话思路会更加清晰。我也用java模拟过一些基本数据结构:

public class MyNodeT {

public T value;

public MyNodeT next;

public MyNode() {

}

public MyNode(T value) {

this.value = value;

}

public MyNode(MyNodeT t) {

this.value = t.value;

this.next = t.next;

}

public void connect(MyNodeT t){

this.next = t;

}

@Override

public String toString() {

return null==value?"":value+"-";

}

}

在这个节点定义的基础上的链表定义:

public class MyLinkListT{

public MyNodeT next;

public MyLinkList() {

this.next = new MyNodeT();

}

public MyLinkList(T[] tList) {

if(tList.length==0)return;

next = new MyNodeT(tList[0]);

MyNodeT temp = next;

for (int i = 1; i tList.length; i++) {

temp.connect(new MyNodeT(tList[i]));

temp = temp.next;

}

}

@Override

public String toString() {

StringBuilder sb = new StringBuilder();

MyNodeT t = next;

while (null != t) {

sb.append(t);

t = t.next;

}

return sb.toString();

}

}

然后是相关的操作类:

public class LinkListAction {

MyLinkListComparable list;

public LinkListAction(MyLinkListComparable list) {

this.list = list;

}

/**

* 头插法建立单链表(数组)

* */

public void createFromHead(Comparable...objects){

MyNodeComparable start;

for (int i = 0; i objects.length; i++) {

start = new MyNodeComparable(objects[i]);

start.next = list.next;

list.next = start;

}

}

/**

* 尾插法建立单链表(数组)

* */

public void createFromTail(Comparable...objects){

MyNodeComparable start;

MyNodeComparable end = list.next;

for (int i = 0; i objects.length; i++) {

start = new MyNodeComparable(objects[i]);

end.next = start;

end = start;

}

end.next = null;

}

/**

* 在单链表中查找第i个结点

* */

public MyNodeComparable get(int i){

if(i 0)return null;

MyNodeComparable node = list.next;

int index = 0;

while (node != null index i) {

node = node.next;

index++;

}

return node;

}

/**

* 在单链表中的按值查找

* */

public MyNodeComparable locate(Comparable obj){

if(null == obj)return new MyNodeComparable();

MyNodeComparable node = list.next;

while (node != null !obj.equals(node.value)) {

node = node.next;

}

return node;

}

/**

* 求单链表的长度

* */

public int getLength(){

int length = 0;

MyNodeComparable node = list.next;

while(null != (node = node.next)){

length++;

}

return length;

}

/**

* 单链表的插入操作(按位置)

* */

public void insert(Comparable obj,int location){

int length = 0;

MyNodeComparable node = list.next;

while(node!=null location != length++){node = node.next;}

if(null == node)throw new RuntimeException("插入位置有误!");

MyNodeComparable inserter = new MyNodeComparable(obj);

inserter.next = node.next;

node.next = inserter;

}

/**

* 删除数据

* */

public Comparable delete(int i){

int length = 0;

MyNodeComparable node = list.next;

while(node!=null i != length++){node = node.next;}

if(null == node)throw new RuntimeException("删除位置有误!");

Comparable o = node.next.value;

node.next = node.next.next;

return o;

}

/**

* 合并两个有序的单链表

* */

public static MyLinkListComparable mergeLinkList(MyLinkListComparable la,MyLinkListComparable lb){

MyLinkListComparable lc = new MyLinkListComparable();

MyNodeComparable pc = lc.next;

MyNodeComparable pa = la.next.next;

MyNodeComparable pb = lb.next.next;

while(null != pa || null != pb){

if(null == pa){

pc.next = pb;

break;

}

if(null == pb){

pc.next = pa;

break;

}

if(pa.value.compareTo(pb.value) = 0){

pc.next = pa;

pa = pa.next;

}

else {

pc.next = pb;

pb = pb.next;

}

pc = pc.next;

}

return lc;

}

@Override

public String toString() {

return list.toString();

}

public static void main(String[] args) {

MyLinkListComparable list1 = new MyLinkListComparable();

MyLinkListComparable list2 = new MyLinkListComparable();

LinkListAction lla = new LinkListAction(list1);

// lla.createFromHead(1,3,4,6,8,10);

lla.createFromTail(1,3,4,6,8,10);

LinkListAction llb = new LinkListAction(list2);

llb.createFromTail(2,5,7,9,11);

System.out.println(lla);

System.out.println(llb);

// System.out.println(lla.locate(7));

// System.out.println(lla.getLength());

//

// lla.insert(20, 6);

// System.out.println(lla);

// System.out.println(lla.delete(4));

System.out.println(LinkListAction.mergeLinkList(lla.list, llb.list));

System.out.println(lla);

System.out.println(llb);

}

}

我还写了一些其他的简单数据结构,感兴趣的话,你可以Hi我一下,呵呵。

圣诞快乐!

java链表的输出问题。。。

package com;

public class LinkStudent {

private Node head;

public LinkStudent(){

head=new Node(null);

}

public void addStu(Node n){

Node p=head;

while(p.getNext()!=null)p=p.getNext();

p.setNext(n);

}

public void backformation(int i1,int i2){

Student s=new Student();

s.setStuno(8);

s.setName("张三8");

s.setAge(188);

s.setClassname("ST08428");

Node n=new Node(s);

Node p1=head;

Student ss=new Student();

Student tt=new Student();

Node n1=null;

Node n2=null;

while(p1.getNext()!=null){

if(p1.getNext().getStu().getStuno()==i1){

ss.setStuno(p1.getNext().getStu().getStuno());

ss.setName(p1.getNext().getStu().getName());

ss.setAge(p1.getNext().getStu().getAge());

ss.setClassname(p1.getNext().getStu().getClassname());

n1=new Node(ss);;

}

if(p1.getNext().getStu().getStuno()==i2){

tt.setStuno(p1.getNext().getStu().getStuno());

tt.setName(p1.getNext().getStu().getName());

tt.setAge(p1.getNext().getStu().getAge());

tt.setClassname(p1.getNext().getStu().getClassname());

n2=new Node(tt);

}

p1=p1.getNext();

}

// System.out.println(n1.getStu().getName());

// System.out.println(n2.getStu().getName());

Node p2=head;

while(p2.getNext()!=null){

if(p2.getNext().getStu().getStuno()==i2){

n1.setNext(p2.getNext().getNext());

p2.setNext(n1);

break;

}

p2=p2.getNext();

}

Node p3=head;

while(p3.getNext()!=null){

if(p3.getNext().getStu().getStuno()==i1){

n2.setNext(p3.getNext().getNext());

p3.setNext(n2);

break;

}

p3=p3.getNext();

}

}

public void findStu(Student stu){

Node p=head;

while(p.getNext()!=null){

Student s=p.getNext().getStu();

if(stu.getName()!=null!stu.getName().equals(" ")){

if(s.getName().equals(stu.getName())){

System.out.println(s.getStuno()+" "+s.getName()+" "+s.getAge()+" "+s.getClassname());

}

}if(stu.getStuno()!=-1){

if(s.getStuno()==stu.getStuno()){

System.out.println(s.getStuno()+" "+s.getName()+" "+s.getAge()+" "+s.getClassname());

}

}

p=p.getNext();

}

}

public void delStu(Student stu){

Node p=head;

while(p.getNext()!=null){

Student s=p.getNext().getStu();

if(stu.getName()!=null!stu.getName().equals(" ")){

if(s.getName().equals(stu.getName())){

p.setNext(p.getNext().getNext());

break;

}

}if(stu.getStuno()!=-1){

if(s.getStuno()==stu.getStuno()){

p.setNext(p.getNext().getNext());

break;

}

}

p=p.getNext();

}

}

public void findagemin(){

Node p=head;

int age=p.getNext().getStu().getAge();

Node p1=p;

while(p.getNext()!=null){

if(agep.getNext().getStu().getAge()){

age=p.getNext().getStu().getAge();

p1=p;

}

p=p.getNext();

}

System.out.print(p1.getNext().getStu().getStuno()+" "+p1.getNext().getStu().getName()+" "+p1.getNext().getStu().getAge()+" "+p1.getNext().getStu().getClassname());

}

public void findNode(){

Node p1=head;

while(p1.getNext()!=null){

System.out.println(p1.getNext().getStu().getStuno()+" "+p1.getNext().getStu().getName()+" "+p1.getNext().getStu().getAge()+" "+p1.getNext().getStu().getClassname());

p1=p1.getNext();

}

}

}

更多精彩尽在群1806431

关于java链表的输出和java链表操作的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-11,除非注明,否则均为首码项目网原创文章,转载请注明出处。