單鏈表逆序的多種方式

2021-08-21 08:57:46 字數 846 閱讀 8522

template

void 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 ...

單鏈表逆序

第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...