博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

java 线性表

Posted on 2012-03-19 12:48  北方明珠  阅读(149)  评论(0)    收藏  举报
  1 package linelist;
2
3 public class list {
4 private class Node{
5 Node pre=null;
6 Node next=null;
7 Object data=null;
8 }
9 private Node header=new Node();
10 /*
11 * 按先后顺寻增加元素
12 */
13 public void add(Object j){
14 Node temp=header;
15 Node current=new Node();
16 while(temp.next!=null){
17 temp=temp.next;
18 }
19
20 if(temp!=null&&temp.data==null)
21 temp.data=j;
22 else{
23 temp.next=current;
24 current.pre=temp;
25 current.data=j;
26 }
27 }
28 /*
29 * 返回线性表的长度
30 */
31 public int listLength(){
32 int i=0;
33 Node search=header;
34 while(search!=null&&search.data!=null){
35 search=search.next;
36 i++;
37 }
38 return i;
39 }
40 /*
41 * 在指定位置增加元素
42 */
43 public void insert(int i,Object ele){
44 Node temp=header;
45 Node current=new Node();
46 for(int j=0;j<i-1;j++){
47 temp=temp.next;
48 }
49 if(i==0){
50 Node node=new Node();
51 node.data=header.data;
52 header.data=ele;
53 ele=node.data;
54 //current.data=ele;
55 }
56 current.next=temp.next;
57 temp.next=current;
58 current.pre=temp;
59 current.data=ele;
60 }
61 /*
62 * 将线性表设置为空
63 */
64 public void clear(){
65 header.next=null;
66 header.data=null;
67 }
68 /*
69 * 判断线性表是否为空,是返回true,否返回false
70 */
71 public boolean isEmpty(){
72 if(header.data==null)
73 return true;
74 return false;
75 }
76 /*
77 * 获得线性表位置i处的元素
78 */
79 public Object getEle(int i){
80 int j=0;
81 Node temp=header;
82 while(j<i){
83 temp=temp.next;
84 j++;
85 }
86 return temp.data;
87 }
88 /*
89 * 获得线性表位置l处之前的元素
90 */
91 public Object getPreEle(int i){
92 if(i>1)
93 return this.getEle(i-1);
94 return null;
95 }
96 /*
97 * 获得线性表位置n处之后的元素
98 */
99 public Object getNextEle(int i){
100 if(i<this.listLength()-1){
101 return this.getEle(i+1);
102 }
103 return null;
104 }
105 /*
106 * 删除线性表位置i处的元素
107 */
108 public void delete(int i){
109 Node temp=header;
110 int j=0;
111 while(j<i){
112 temp=temp.next;
113 j++;
114 }
115
116 Node node=null;
117 if(i!=0){
118 node=temp.pre;
119 temp.pre.next=temp.next;
120 temp.next.pre=node;
121 }
122 else{
123 temp.data=temp.next.data;
124 temp.next=temp.next.next;
125 }
126 }
127 public void show(){
128 Node temp=header;
129 System.out.println(header.data);
130 //System.out.println(header.data);
131 /*do{
132
133 temp=temp.next;
134 }while(temp.next!=null);*/
135
136 }
137 }