如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
你可以用 doubly linked list 偷吃步,不過既然會考你 link list 反轉,應該是要考你如何將單向 linked list 反轉,你需要同時用三個變數紀錄前一個、後一個、和現在的節點,演算法如下:- static wznode *
- wz_invert_node(wznode * node) { /* node must not be NULL */
- wznode * root;
- wznode * c = node; /* c => child */
- wznode * n = c->parent; /* n => node */
- wznode * p; /* p => parent */
- for (;;) {
- if (n == NULL) {
- root = c;
- break;
- }
- p = n->parent;
- n->parent = c;
- if (p == NULL) {
- root = n;
- break;
- }
- c = n;
- n = p;
- }
- node->parent = NULL;
- return root;
- }
複製代碼 以這個例子說明,每個 node 都有自己的父節點,利用各自的父節點將節點們連接成一個單向 linked list,最頂端的父節點的父節點是 NULL,相當於單向 linked list 的尾巴,最底端的子節點相當於單向 linked list 的頭,這個函數將最底端的子節點作為輸入,然後將整條單向 linked list 反轉後回傳原本最頂端的父節點,也就是新的單向 linked list 的頭...
|