网上看到福富的笔试题里有一道关于单链表的题目,以前都是在C语言下实现的,这次试试看用JAVA实现。
题目:实现一个单链表,结点结构为data link,补完以下方法。
1 public class Link {
2
3 private static class Node {
4
5 // 补完结构
6 }
7 public Link() {
8 }
9 /**
10 *
11 * 插入一组数据
12 */
13
14 public Link(Integer[] data) {
15
16 // 补完方法
17 }
18
19 /** 返回头结点 */
20
21 public Node getHeader() {
22
23 // 补完方法
24 }
25
26 /** 打印单链表中的最大值(maxValue)和所在位置(maxIndex) */
27
28 public void printMax() {
29
30 // 补完方法
31 }
32
33 }
我的实现,有不足之处可以指出啊,谢谢
1 /**
2 * @author 大嘴
3 *单链表题目
4 */
5 /**
6 * @author IBMETP059
7 *
8 */
9 public class Link {
10 /**
11 * @author IBMETP059
12 *节点内部类
13 */
14 public static class Node {
15
16
17 /**
18 * 存放数据
19 */
20 private Integer number;
21
22
23 /**
24 * 存放下一个节点的引用
25 */
26 private Node next;
27
28
29 /**
30 * 存放当前节点的序号
31 */
32 private Integer pos;
33
34 public Integer getPos() {
35 return pos;
36 }
37
38 public void setPos(Integer pos) {
39 this.pos = pos;
40 }
41
42 public Integer getNumber() {
43 return number;
44 }
45
46 public void setNumber(Integer number) {
47 this.number = number;
48 }
49
50 public Node getNext() {
51 return next;
52 }
53
54 public void setNext(Node next) {
55 this.next = next;
56 }
57 }
58
59 /**
60 * 头节点
61 */
62 private Node head;
63
64
65 /**
66 * 指向当前节点的引用
67 */
68 private Node nowNode;
69
70 public Node getHead() {
71 return head;
72 }
73
74 public Link() {
75 head = new Node();
76 }
77
78
79 /**
80 * 构造函数
81 * @param data 初始化数据
82 */
83 public Link(Integer[] data) {
84 head = new Node();
85 Node node;
86 for (int i = 0; i < data.length; i++) {
87 node = new Node();
88 node.setNumber(data[i]);
89 node.setPos(i);
90 if (i == 0) {
91 nowNode = head;
92 nowNode.setNext(node);
93 }
94 nowNode.setNext(node);
95 nowNode = node;
96 nowNode.setNext(null);
97 }
98 }
99
100
101 /**
102 * 打印出信息
103 */
104 public void printMax() {
105 Node node;
106 Integer max = Integer.MIN_VALUE;
107 Integer pos = 0;
108 node = head.getNext();
109 while (node != null) {
110 if (max.compareTo(node.getNumber()) < 0) {
111 max = node.getNumber();
112 pos = node.getPos();
113 }
114 node = node.getNext();
115 }
116 System.out.println("max:" + max + " pos:" + pos);
117 }
118
119 public static void main(String[] args) {
120 Integer[] n = { 1, 41, 72, 3, 5, 6 };
121 Link link = new Link(n);
122 link.printMax();
123 }
124 }
结果图: