1 package datastructure;
2
3 public class Node {
4 private Object data;
5 private Node next;
6
7 public Node() {
8 this(null,null);
9 }
10
11 public Node(Object data) {
12 this(data,null);
13 }
14
15 public Node(Object data, Node next) {
16
17 this.data = data;
18 this.next = next;
19 }
20 public Object getData() {
21 return data;
22 }
23
24 public void setData(Object data) {
25 this.data = data;
26 }
27
28 public Node getNext() {
29 return next;
30 }
31
32 public void setNext(Node next) {
33 this.next = next;
34 }
35
36 }
1 package datastructure;
2
3 import java.util.Scanner;
4
5 public class LinkList implements IList {
6 private Node head; //单链表的头指针
7 public LinkList(){
8 head=new Node(); //初始化头指针
9 }
10 public LinkList(int n,boolean Order) throws Exception{
11 this();
12 if(Order)
13 create1(n); // 尾插法
14 else
15 create2(n); // 头插法
16 }
17
18 private void create1(int n) throws Exception {
19 Scanner sc=new Scanner(System.in);
20 for(int j=0;j<n;j++)
21 insert(0,sc.next());
22 }
23 private void create2(int n) throws Exception {
24 Scanner sc=new Scanner(System.in);
25 for(int j=0;j<n;j++)
26 insert(length(),sc.next());
27 }
28 public void clear() {
29 head.setData(null);
30 head.setNext(null);
31 }
32
33 public boolean isEmpty() {
34
35 return head.getNext()==null;
36 }
37
38 public int length() {
39 Node p=head.getNext();
40 int length=0;
41 while(p!=null){
42 p=p.getNext();
43 length++;
44 }
45 return length;
46
47
48 }
49
50 public Object get(int i) throws Exception {
51 Node p=head.getNext();
52 int j=0;
53 while(p!=null&&j<i){
54 p=p.getNext();
55 j++;
56 }
57 if(j>i||p==null){
58 throw new Exception("第i个元素不存在");
59 }
60
61 return p.getData();
62 }
63
64 public void insert(int i, Object x) throws Exception {
65 Node p =head;
66 int j=-1;
67 while(p!=null&&j<i-1){
68 p=p.getNext();
69 j++;
70 }
71 if(p==null||j>i-1){
72 throw new Exception("插入位置不合法");
73 }
74 Node s=new Node(x);
75 s.setNext(p.getNext());
76 p.setNext(s);
77 }
78
79 public void remove(int i) throws Exception {
80 Node p=head;
81 int j=-1;
82 while(p.getNext()!=null&&j<i-1){
83 p=p.getNext();
84 j++;
85 }
86 if(j>i-1||p.getNext()==null)
87 throw new Exception("删除位置不合法");
88 p.setNext(p.getNext().getNext());
89 }
90
91 public int indexOf(Object x) {
92 Node p=head.getNext();
93 int j=0;
94 while(p!=null&&!p.getData().equals(x)){
95 p=p.getNext();
96 j++;
97 }
98 if(p==null)
99 return -1;
100 else
101 return j;
102
103 }
104
105 public void display() {
106 Node node =head.getNext();
107 while(node!=null){
108 System.out.println(node.getData()+" ");
109 node=node.getNext();
110 }
111 System.out.println();
112 }
113
114
115 }