<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8" /> | |
<title></title> | |
<script type="text/javascript"> | |
function Node(elemnt) { | |
this.item = elemnt; | |
this.next = null; | |
} | |
//循环列表需要修改一下构造函数,和遍历时候的判断条件 | |
//构造函数如下;希望从后向前遍历,又不想要建立双向链表,就使用循环链表。 | |
function Llist() { | |
this.head = new Node("1"); | |
this.head.next = this.head; | |
this.remove = remove; | |
this.insert = insert; | |
this.find = find; | |
this.display = display; | |
//.......... | |
} | |
function find(number) { | |
var curr = this.head; | |
while (curr.item != number) { | |
curr = curr.next; | |
} | |
return curr; | |
} | |
function insert(element, newElement) { | |
var preNode = this.find(element); | |
var current = new Node(newElement); | |
current.next = preNode.next; | |
preNode.next = current; | |
} | |
function remove() { | |
var current = this.head; | |
console.log("remove"); | |
var hh = 0; | |
while (current.next.next != null && current.item != current.next.next.item) { | |
var temp = current.next.next; | |
current.next.next = temp.next; | |
current = temp.next; | |
temp.next = null; | |
} | |
return current; | |
} | |
function display(flag,current) { | |
var crr = this.head; | |
// | |
if (flag) { | |
while(crr.next.item!="1"){ | |
console.log(crr.item); | |
crr = crr.next; | |
} | |
} else {//最后只剩两个直接输出 | |
console.log(current.item); | |
console.log(current.next.item); | |
} | |
} | |
var Clist = new Llist(); | |
for (var i = 1; i < 41; i++) { | |
Clist.insert(i.toString(), (i + 1).toString()); | |
} | |
Clist.display(1,null); | |
Clist.display(0,Clist.remove()); | |
</script> | |
</head> | |
<body> | |
</body> | |
</html> |
数据结构 链表
最新推荐文章于 2024-04-27 18:39:36 发布