首尾交換鍊錶

2021-10-25 03:12:29 字數 1194 閱讀 4291

1->2->3->4->5 ==> 1->5->2->4->3

將節點依次放入集合中,通過索引交換

/**

* 將鍊錶的節點放入順序表中,這樣方便獲取最後乙個節點

* 1->2->3->4

* 1->4->2->3

*/public void recordlist(listnode head)

int i=0,j=list.size()-1;

while (istack=new arraydeque<>();

listnode cur=head;

while (cur!=null)

cur=head;

listnode stack_cur=new listnode(integer.max_value);

while (cur.next!=stack_cur.next)

stack_cur.next=null; //防止出現環形問題

}

/**

* 1 -> 2 -> 3 -> 4 -> 5 -> 6

第一步,將鍊錶平均分成兩半

1 -> 2 -> 3

4 -> 5 -> 6

第二步,將第二個鍊錶逆序

1 -> 2 -> 3

6 -> 5 -> 4

第三步,依次連線兩個鍊錶

1 -> 6 -> 2 -> 5 -> 3 -> 4

尋找鍊錶中點 + 鍊錶逆序 +合併鍊錶

* @param head

*/public void recordlist3(listnode head)

private void mergelist(listnode head, listnode afternode)

}public listnode middlenode(listnode head)

return res[index/2];

}public listnode reverselist(listnode head)

listnode temp=dummy.next;

while (temp.next!=null)

listnode last=temp;

while (dummy.next!=last)

return dummy.next;

}

順序表 元素逆置(首尾交換)

題意 要求空間複雜度為o 1 順序表的儲存結構 typedef struct sqlist 分析 這裡要實現元素的逆置。想想和單鏈表的區別。這裡如何逆置?單鏈表是如何逆置的?這裡是首尾交換元素,常用那個交換操作。而單鏈表有兩種方法,一是頭插法,二是修改指標。思路 1.定義迴圈變數i 和中間變數x,用...

lisp 首尾節點閉合 鍊錶首尾節點的常規方案

本表對基本煉表處理操作分別以五種常用的定義方案給出其實現方法。這類 用於簡單的 使用內嵌煉表處理 的應用程式。迴圈,永遠非空 頭插入 head next head 在x節點後插入t節點 t next x next x next t 刪除x後的節點 x next x next next 遍歷迴圈 t ...

LC 交換鍊錶節點

將給定的鍊錶中每兩個相鄰的節點交換一次,返回鍊錶的頭指標 例如,給出1 2 3 4,你應該返回鍊錶2 1 4 3。你給出的演算法只能使用常量級的空間。你不能修改列表中的值,只能修改節點本身。struct listnode class solution listnode phead newlistno...