java代码圣诞快乐 圣诞节快乐代码书写

java 链表的输出问题

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

10多年建站经验, 成都网站建设、网站建设客户的见证与正确选择。创新互联公司提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。

你本就不应该加入‘表尾’这个属性,在数据结构中链表的特点就是能用一个地址带一个长串数据链的,不用这个属性的话思路会更加清晰。我也用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写一个新春贺卡,可转exe的

JAVA 做多媒体,不是强项

转 .exe 可以使用 exe4j

~

求助用JAVA打印一个圣诞树

朋友 你说的最好一句话我没明白?

你能具体说下吗?最好弄个图片。

我跟你说一下思路:就是用for循环就可以.

---给你答案 供你参考,仓促写的:

public class ChristmasTree {

int x = 2;

int i = 0;

public void tree() {

for(i=0; i3; i++) {

for(int j=x; j=0; j--) {

System.out.print(" ");

}

x--;

for(int k=0; k=i; k++) {

System.out.print("*"+" ");

}

System.out.println();

}

}

public static void main(String args[]) {

new ChristmasTree().tree();

}

}

分享文章:java代码圣诞快乐 圣诞节快乐代码书写
分享URL:https://www.cdcxhl.com/article2/dddgiic.html

成都网站建设公司_创新互联,为您提供建站公司响应式网站品牌网站制作微信公众号网站制作网站设计公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计