博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现单链表
阅读量:2157 次
发布时间:2019-05-01

本文共 2917 字,大约阅读时间需要 9 分钟。

我们开始学习java实现单链表。

 

单链表类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package 
linklist;
 
public 
class 
LinkList {
     
    
class 
Element
    
{
        
public 
Object value=
null
;
        
private 
Element next=
null
;
    
}
    
private 
Element header = 
null
;
//头结点
    
/**
     
* 初始化链表
     
* */
    
void 
initList()
    
{
        
header = 
new 
Element();
        
header.value=
null
;
        
header.next=
null
;
    
}
     
    
/**
     
* 插入链表
     
* */
    
void 
insertList(Object o)
    
{
        
Element e=
new 
Element();
        
e.value=o;
        
if
(header.next==
null
)
//第一次插入元素
        
{
            
header.next=e;
        
}
else
//不是第一次插入元素
        
{
            
//temp引用在栈中,temp和header引用都指向堆中的initList()中new的Element对象
            
Element temp = header;
            
while
(temp.next!=
null
)
//寻找最后一个元素
            
{
                
temp=temp.next;
            
}
            
temp.next=e;
        
}
    
}
     
    
/**
     
* 删除链表中第i个元素
     
* */
    
void 
deletelist(Object o)
    
{
        
Element temp =header;
        
while
(temp.next!=
null
)
        
{
            
//判断temp当前指向的结点的下一个结点是否是要删除的结点
            
if
(temp.next.value.equals(o))
            
{
                
temp.next=temp.next.next;
//删除结点
            
}
else
            
{
                
temp=temp.next;
//temp“指针”后移
            
}
        
}
    
}
     
    
/**
     
* 获取链表的第i个位置的元素
     
* */
    
Element getElement(
int 
i)
    
{
        
if
(i<=
0 
|| i>size())
        
{
            
System.out.println(
"获取链表的位置有误!返回null"
);
            
return 
null
;
        
}
        
else
        
{
            
int 
count =
0
;
            
Element element = 
new 
Element();
            
Element temp = header;
            
while
(temp.next!=
null
)
            
{
                
count++;
                
if
(count==i)
                
{
                    
element.value=temp.next.value;
                
}
                
temp=temp.next;
            
}
            
return 
element;
        
}
    
}
    
/**
     
* 链表长度
     
* */
    
int 
size()
    
{
        
Element temp = header;
        
int 
size=
0
;
        
while
(temp.next!=
null
)
        
{
            
size++;
            
temp=temp.next;
        
}
        
return 
size;
    
}
     
    
/**
     
* 判断链表中是否存在某元素
     
* */
    
Boolean isContain(Object o)
    
{
        
Element temp =header;
        
while
(temp.next!=
null
)
        
{
            
if
(temp.next.value.equals(o))
            
{
                
return 
true
;
            
}
            
temp=temp.next;
        
}
        
return 
false
;
    
}
    
/**
     
* 打印链表
     
* */
    
void 
print()
    
{
        
System.out.print(
"打印链表:"
);
        
Element temp =header;
        
while
(temp.next!=
null
)
        
{
            
temp=temp.next;
            
System.out.print(temp.value+
"\t"
);
        
}
        
System.out.println();
    
}
}

  测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package 
linklist;
 
public 
class 
LinkListMain {
 
    
public 
static 
void 
main(String[] args) {
        
LinkList lList = 
new 
LinkList();
        
lList.initList();
        
lList.insertList(
1
);
        
lList.insertList(
2
);
        
lList.insertList(
3
);
        
lList.insertList(
4
);
        
lList.insertList(
5
);
        
lList.print();
        
lList.deletelist(
2
);
        
lList.print();
        
System.out.println(
"链表长度:"
+lList.size());
        
System.out.println(
"第1个元素值为:"
+lList.getElement(
1
).value);
        
System.out.println(
"第2个元素值为:"
+lList.getElement(
2
).value);
        
System.out.println(
"第3个元素值为:"
+lList.getElement(
3
).value);
        
System.out.println(
"第4个元素值为:"
+lList.getElement(
4
).value);
         
        
System.out.println(lList.isContain(
2
));
        
System.out.println(lList.isContain(
6
));
        
System.out.println(lList.isContain(
5
));
    
}
 
}

  

转载地址:http://bpmwb.baihongyu.com/

你可能感兴趣的文章
走进JavaWeb技术世界2:JSP与Servlet的曾经与现在
查看>>
走进JavaWeb技术世界3:JDBC的进化与连接池技术
查看>>
走进JavaWeb技术世界4:Servlet 工作原理详解
查看>>
走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程
查看>>
走进JavaWeb技术世界6:Tomcat5总体架构剖析
查看>>
走进JavaWeb技术世界7:Tomcat和其他WEB容器的区别
查看>>
走进JavaWeb技术世界9:Java日志系统的诞生与发展
查看>>
走进JavaWeb技术世界10:从JavaBean讲到Spring
查看>>
走进JavaWeb技术世界11:单元测试框架Junit
查看>>
走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
查看>>
走进JavaWeb技术世界13:Hibernate入门经典与注解式开发
查看>>
走进JavaWeb技术世界14:Mybatis入门
查看>>
走进JavaWeb技术世界16:极简配置的SpringBoot
查看>>
初探Java设计模式1:创建型模式(工厂,单例等)
查看>>
初探Java设计模式2:结构型模式(代理模式,适配器模式等)
查看>>
初探Java设计模式3:行为型模式(策略,观察者等)
查看>>
初探Java设计模式4:一文带你掌握JDK中的设计模式
查看>>
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>