單鏈表逆序(c實現)

2021-06-28 01:26:40 字數 1007 閱讀 9015

單鏈表逆序作為常見的資料操作,具體實現有不同的版本,但是總歸需要考慮輸入結點為空、乙個結點和多個結點的情況。

該逆序思想來自《劍指offer》;另外乙個容易想到的逆序方式是,申請乙個頭結點head,然後把待逆序結點順序插入到頭結點後head->next,最後返回head->next即可。

#include #include typedef struct node  node;

node* create_list(int *array,const int length)

if(length<=0)

node *head = (node*)malloc(sizeof(node));

head->data = array[0];

head->next = null;

node *p ,*q = head;

for(int i=1;idata = array[i];

q->next = p;

q = p;

} q->next = null;

return head;

}node *reverse(node *head)

cur = head->next;

prev = head;

prev->next = null; //頭結點變尾結點,next置空

while(cur!=null)

return prev;

}void print(node *head)

}int main(void)

; const int len = sizeof(a)/sizeof(int);

node *head = create_list(a,len);

print(head);

printf("\n");

node *rev = reverse(head);

print(rev);

printf("\n");

return 0;

}

單鏈表逆序

include include typedef struct student student typedef struct list list,list list createlist void paixu list l 比較笨拙的一種方法 list reverse list l int main ...

單鏈表逆序

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

單鏈表逆序

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