package DateStructuresHomework;
import homework.F;
public class SingleLinkedList {
private Node head=new Node("");
public void insert(Node Node)
{
Node temp=head;
while (true)
{
if (temp.next==null)
break;
temp=temp.next;
}
temp.next=Node;
display();
}
public void delete(int no)
{
Node temp=head;
for (int i = 0; i <no ; i++)
{
temp=temp.next;
}
temp.next=temp.next.next;
display();
}
public void find(Object x)
{
Node temp=head;
int n=0;
while (temp.next==null)
{
if (temp.val==x)
{
break;
}
n++;
}
System.out.println(n);
}
public void display()
{
Node temp=head;
while (temp.next==null)
System.out.print(temp.val+" ");
}
}
class Node{
public Object val;
public Node next;
public Object getVal() {
return val;
}
public void setVal(Object val) {
this.val = val;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node(Object val) {
this.val = val;
}
}
class Test2
{
public static void main(String[] args) {
Node node1=new Node(1);
Node node2=new Node(2);
SingleLinkedList singleLinkedList=new SingleLinkedList();
singleLinkedList.insert(node1);
singleLinkedList.insert(node2);
singleLinkedList.display();
}
}
为什么输入数据输出不了东西,应该怎么修改
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 梦里逆天 2022-09-22 08:58关注
可参考:https://blog.csdn.net/qq_69133469/article/details/124312857 、 https://blog.csdn.net/u011723409/article/details/125456921
import java.util.Scanner; public class SingleLinkedList<T> { //结点定义 private class Node{ //数据 T item; //指向下一个结点 Node next; //构造器 public Node(T item,Node next){ this.item = item; this.next = next; } public Node(T item){ this.item = item; } } //头结点 private Node head; //尾结点 private Node tail; //结点个数 private int size; //链表定义 public SingleLinkedList(){ this.head = new Node(null,null); size = 0; } //查找特定位置的链表结点 public Node get(int index) { if (index <0 || index >=this.size){ return null; }else{ Node temp = this.head; for(int i =1; i<= index; i++){ temp = temp.next; } return temp; } } public void add(T data){ Node temp = new Node(data); //链表为空时 if (this.size == 0){ head = temp; tail = head; }else{ Node last = tail; last.next = temp; this.tail = temp; } this.size ++; } //在链表的第i个位置插入一个值为t数据 public void insert(int index ,T data) throws Exception{ if(index <0 ||index > this.size){ throw new Exception("插入超出范围"); }else{ Node newNode = new Node(data); //在头结点插入元素 if (index ==0){ if(this.size >0){ Node temp = head; newNode.next = temp; } head = newNode; } //在尾结点插入元素 else if(index == this.size){ Node temp = tail; temp.next = newNode; this.tail = newNode; }else{ //在中间插入元素 Node preNode = get(index-1); Node nextNode = preNode.next; newNode.next = nextNode; preNode.next = newNode; } } this.size ++; if(size == 1){ tail = head; } } //删除特定位置的数据 public void del(int index )throws Exception{ if (index <0 ||index >=this.size){ throw new Exception("删除超出范围"); }else{ //删除头结点 if (index == 0){ Node temp = this.head.next; this.head = temp; }else if(index == this.size-1){ //删除尾结点 Node preNode = get(index -1); this.tail = preNode; preNode.next = null; }else{ //删除中间结点 Node preNode = get(index -1); Node nextNode = preNode.next.next; preNode.next = nextNode; } } this.size --; } public void printLinkList(){ if(this.size ==0){ System.out.println("链表为空"); } else { Node temp = head; System.out.print("目前的列表,头结点:" + head.item + ",尾结点:" + tail.item + ",整体:"); while (temp != null) { System.out.print(temp.item + ","); temp = temp.next; } System.out.println(); } } public static void main(String args[]) throws Exception { SingleLinkedList linkList = new SingleLinkedList(); int[] numbers = new int[20]; Scanner scanner = new Scanner(System.in); int num, i = 0; while(scanner.hasNextInt()) { num = scanner.nextInt(); if (num != 0) { numbers[i] = num; i++; }else{ break; } } System.out.println(i); for(int j=i-1; j>=0; j--) { System.out.println(numbers[j]); linkList.add(numbers[j]); } linkList.printLinkList(); // 在指定索引插入值 int index_insert, insert_val; Scanner scanner1 = new Scanner(System.in); index_insert = scanner1.nextInt(); insert_val = scanner1.nextInt(); linkList.insert(index_insert, insert_val); linkList.printLinkList(); // 删除指定索引位置的值 int del_index; del_index = scanner1.nextInt(); linkList.del(del_index); linkList.printLinkList(); // 获取指定索引位置的值 int find_index; find_index = scanner1.nextInt(); int result = (int) linkList.get(find_index).item; System.out.println(result); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 WPF 大屏看板表格背景图片设置
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示