採用就地逆置, 定義三個指標變數, 乙個標記現在跟在head後的節點, 乙個記錄現在要移動的節點, 乙個記錄現在要移動的節點之後的節點。
struct listnode* reverselist(struct listnode* head)
if (head->next == null)
p = head;
q = p->next;
r = q->next;
p->next = null;
while(1)
p = q;
q = r;
r = r->next;
}return head;
}
定義兩個指標,快慢指標, 快的一次走兩個, 慢的一次走乙個, 如果他們可以相遇, 說明是迴圈鍊錶, 如果快指標走到了結尾, 則不是迴圈鍊錶
bool hascycle(struct listnode *head)
pfast = head->next;
pslow = head;
while (1)
if (pfast->next->next == null)
pfast = pfast->next->next;
pslow = pslow->next;
if (pslow == pfast)
}}
使用兩次遍歷, 方法顯而易見,但如果使用一次遍歷, 方法是定義兩個指標, 第乙個指標先向前走n個, 此時第二個指標開始走, 這樣當第乙個指標走到結尾時, 第二個指標走到倒數第n個節點位置。
struct listnode* removenthfromend(struct listnode* head, int n)
ptemp1 = ptemp1->next;
}if (ptemp1->next == null)
while(ptemp1->next != null)
ppre->next = ptemp2->next;
return head;
}
定義兩個快慢指標, 比如只有三個節點, 快指標指向第三個, 慢指標指向第乙個節點, 判斷快的下乙個是否為空, 此時為空, 讓慢指標下乙個為頭指標, 輸出該鍊錶。
struct listnode* middlenode(struct listnode* head)
if (head->next->next == null)
pfast = pslow = (struct listnode*)malloc(sizeof(struct listnode));
pfast = head->next->next;
pslow = head;
for (i = 1; ; i++)
if ((pfast->next != null) && (pfast->next->next == null))
pfast = pfast->next->next;
pslow = pslow->next;
}}
我的思路是,先尋找以那條鏈作為主鏈,比如1,2,3和2,3,4通過比較第乙個我覺定以第一條作為主鏈,把第二條插到第一條,ptemp標記第二條目前要插入的元素,ppre標記第一條鏈的元素,如果是1表示插到1後
struct listnode* mergetwolists(struct listnode* l1, struct listnode* l2)
if (l2 == null)
ppre = plater = ptemp = (struct listnode *)malloc(sizeof(struct listnode));
if (l1->val < l2->val) else
if (ppre->next == null) else else }}
}} else else
if (ppre->next == null) else else }}
}}
}
這些都是我在力扣上提交的** 五個常見鍊錶操作
package cn.wangbo.list 這是鍊錶類,封裝了鍊錶節點資訊 public class node public node t val,node next 單鏈表反轉,只需要將每個結點的next指標指向其前驅結點。這個過程中,為了避免斷鏈,我們需要新建三個結點記錄當前結點 當前結點的前...
鍊錶(五) 單向迴圈鍊錶
1.單向迴圈鍊錶 區分單向鍊錶和單向迴圈鍊錶 單向迴圈鍊錶的尾指標指向頭結點。2.單向迴圈鍊錶的基本操作 include include define null 0 typedef struct node elemsn elemsn creat link int ms 建立乙個單向迴圈鍊錶 void...
鍊錶的操作
鍊錶是資料結構中的乙個重要組成部分,對鍊錶操作的熟練度怎麼要求都不過分。只有部分核心 主要內容 1 鍊錶的建立 2 鍊錶的釋放 3 鍊錶的查詢 4 鍊錶中節點的插入 5 鍊錶中節點的刪除 6 鍊錶的反轉 7 兩個鍊錶的連線 define max 15 節點宣告 struct list typedef...