今天聽說同學面試問了鍊錶逆置,於是久違地敲了下**。。。
這裡逆置用的是插頭法,網上資料也很多,大家可以去找找有**的。
將需要逆置的鍊錶的頭去掉!
也就是說,我們可以用乙個輔助鍊錶(p)去指向當前head->next節點。於是我們暫時儲存了除head以外的鍊錶,然後將表頭割裂!
head->next = null;
並且將其賦值給另乙個輔助鍊錶(q)。
做完這些初始化操作之後,我們進入迴圈部分:
迴圈部分很重要的是理解指標賦值這件事情!
乙個指標物件指向的是乙個位址!而鍊錶可以說一連串記憶體分散的單元,比如說表頭指標,實際上儲存的是乙個node節點資訊的位址,所以我們不能直接將指標賦值認為是複製!
#includeusing namespace std;
struct node;
node *create(node* head,int len)
if(t < l->val)
else
node *temp = new node();
temp->val = t;
temp->next=null;
temp->next = l->next;
l->next = temp;
cout<<"head->next->value: "vall->next = null; //將頭結點之後置空
while(p!=null)
return l;
}int main()
node *result = new node();
reverse(head);
result = head;
while(result!=null)
return 0;
}
鍊錶之鍊錶的逆置
題目 資料結構實驗之鍊表三 鍊錶的逆置 time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 輸入多個整數,以 1作為結束標誌,順序建立乙個帶頭結點的單鏈表,之後對該單鏈表的資料進...
13 鍊錶逆置簡單應用
這裡只介紹鍊錶逆置的實現 效果展示 賦值 padd data i padd next null 建立鍊錶 if head null else ptmp始終保持在最後乙個結點位置,方便新新增的結點的插入 ptmp padd 間接修改實參頭結點的值 phead head 列印鍊錶 void list p...
鍊錶就地逆置
就地逆置,就是在不借助任何中間變數的情況下,逆置一單鏈表。演算法思路 逆置後的點鍊錶初始為空,表中的節點不是新生成的,而是從原鍊錶當中一次 刪除 再逐個頭插到逆置表中。設逆置鍊錶的初始態為空表,刪除 已知鍊錶中 的第乙個節點,然後將它 插入 到逆置鍊錶的 表頭 即使得他成為逆置鍊錶中 新 的第乙個節...