templatevoid list::inverse()
first->link = prev;; //
最後連上附加頭結點
}
link_node *reverselink(link_node *head)
return prev;
}
/* 單鏈表反轉/逆序 */status listreverse(linklist l)
//printf("current = %d,next = %d \n",current->data,current->next->data);
l->next = current; /* 將煉表頭節點指向p1 */
return l;
}
status listreverse2(linklist l)current = l->next;
while (current->next != null)
return l;
}
status listreverse3(linklist l)//初始化newlist
newlist->data = l->data;
newlist->next = null;
//依次將l的第乙個結點放到newlist的第乙個結點位置
while (l->next != null)
//原頭結點應該釋放掉,並返回新頭結點的指標
free(l);
return newlist;
}
單鏈表逆序 多種方法總結
經常會碰到一道關於鍊錶的題目 鍊錶逆序,今天就來進行一下總結 一.使用額外記憶體空間實現 和陣列逆序一樣,鍊錶的逆序也可以使用額外的結點空間做中轉,但這也分有兩種思路。假設鍊錶為a b c d e 1.先取出鍊錶的最後乙個e,然後將e作為新鍊錶的頭,再依次取出原來鍊錶的最後乙個節點,插入到新鍊錶的最...
單鏈表逆序
include include typedef struct student student typedef struct list list,list list createlist void paixu list l 比較笨拙的一種方法 list reverse list l int main ...
單鏈表逆序
第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...