题目:逆转一个线性链表
解题思路:所谓线性表的逆战操作是在不增加新的链结点空间的前提下,通过改变链结点指针域内地址的方式来依次改变数据元素的逻辑关系。
具体算法实现如下:
这里我们会用到toString(list))来打印一个线性链表出来。
这里我们会用到createLinklist(n)来建立一个线性链表出来
function reverseList(list) {
let p, q, r //p表示要逆转的结点,q表示正在逆转的结点,r表示上一个逆转完的结点
p = list
q = null
while( p!=null ){
r = q
q = p
p = p.link
q.link = r
}
return q
}
var list = createLinklist(10)
console.log('创建的list为:', toString(list))
var r_list = reverseList(list)
console.log('逆转后的链表为:', toString(r_list))