For array, you might have to left shift all the elements by 1, each time after you dequeue. i.e. before dequeue: 1 | 2 | 3 | after dequeue: 2 | 3 Fop linked list, you don't need to do so. i.e. before dequeue: 1 -> 2 -> 3 header points to 1. after dequeue: 2 -> 3 header points to 2. but you have to maintain a pointer which points to the last element and add new element at the tail when enqueue. To me it's more efficient to use linked list to implement queue than array. Show ugly code for deep copy. 有劳大牛指点. public Node deepCopy(Node head) {
你用array 的方法不太对,所以才要left shift all the elements. 如果你用两个变 量,一个是enqueue的位置,一个是dequeue的位置。就不用了。
add
【在 e****e 的大作中提到】 : For array, you might have to left shift all the elements by 1, each time : after you dequeue. i.e. : before dequeue: 1 | 2 | 3 | : after dequeue: 2 | 3 : Fop linked list, you don't need to do so. i.e. : before dequeue: 1 -> 2 -> 3 header points to 1. : after dequeue: 2 -> 3 header points to 2. : but you have to maintain a pointer which points to the last element and add : new element at the tail when enqueue. : To me it's more efficient to use linked list to implement queue than array.
e*s
28 楼
二爷。您这实现并不是fixed是什么意思?请指教。
【在 p*****2 的大作中提到】 : : array是fixed,但是实现并不是fixed
a*s
29 楼
array: sequential save, may have lower cache or memory miss rate in sequential access; fixed size, linked list: may or may not sequential store, easy to add or remove node, sequential access may have high cache or memory miss rate, dynamic size
e*e
30 楼
Still need to move elements around after a while.
【在 e***s 的大作中提到】 : 你用array 的方法不太对,所以才要left shift all the elements. 如果你用两个变 : 量,一个是enqueue的位置,一个是dequeue的位置。就不用了。 : : add