您的位置:首页 > 其它

9.2链表(一)——移除未排序链表中的重复结点

2015-07-31 14:12 330 查看
[align=left]/**[/align]
[align=left] * 功能:移除未排序链表中的重复结点。[/align]
[align=left] */[/align]
[align=left]两种方法:[/align]
[align=left]1、/*直接迭代访问整个链表,将每个节点加入散列表。若发现有重复元素,则将该节点从链表中移除,[/align]
[align=left] 然后继续迭代。*/[/align]
[align=left] /*Hashtable只是起到检查是否重复的作用,操作仍是在链表上*/[/align]
public
static
void
deleteDups(LinkedListNode
n){

Hashtable
table=new
Hashtable();
LinkedListNode
pre=
null;

while(
n!=
null){

if(
table.containsKey(
n.
data)){

pre.
next=
n.
next;
//移除重复结点
}
else{

table.put(n.data
,
true);

pre=
n;
[align=left] }[/align]

n=
n.
next;
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
2、
/**不使用缓冲区
[align=left] * 用两个指针来迭代:current迭代访问整个链表runner用于检查后续的节点是否重复。[/align]
[align=left] */[/align]
public
static
void
deleteDups2(LinkedListNode
head){

if(
head==
null)

return;
LinkedListNode
current=
head;

while(
current!=
null){
LinkedListNode
runner=
current;

while(
runner.
next!=
null){

if(
runner.
next.
data==
current.
data){

runner.
next=
runner.
next.
next;
}
else{

runner=
runner.
next;
[align=left] }[/align]
[align=left] }[/align]

current=
current.
next;
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]链表节点:[/align]
class
LinkedListNode{
LinkedListNode
next=
null;
int
data;
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
public
LinkedListNode(
int
d){

this.
data=
d;
[align=left] }[/align]
[align=left] [/align]
public
void
appendToTail(
int
d){
LinkedListNode
end=
new
LinkedListNode(
d);
LinkedListNode
n=
this;

while(
n.
next!=
null){

n=
n.
next;
[align=left] }[/align]

n.
next=
end;
[align=left] }[/align]
[align=left] [/align]
public
LinkedListNode
deleteNode(LinkedListNode
head
,int
d
){
LinkedListNode
n=
head;

if(
n.
data==
d)

return
head
.next
;
[align=left] [/align]

while(
n.
next!=
null){

if(
n.
next.
data==
d){

n.
next=
n.
next.
next;

return
head
;
[align=left] }[/align]

n=
n.
next;
[align=left] }[/align]

return
head
;
[align=left] }[/align]
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: