「java链表的输出」java链表操作
本篇文章给大家谈谈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链表操作的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-11,除非注明,否则均为
原创文章,转载请注明出处。