【資料結構】單鏈表迴圈左移K位
阿新 • • 發佈:2019-02-07
例如連結串列資料有:1 2 3 4 5 6 7 8 910
左移2位 結果為 3 4 5 6 7 8 9 10 1 2
需要處理邊界情況 :左移11位 顯示錯誤 ,左移0位 顯示錯誤 ,左移10位 顯示錯誤。
void leftshift(LinkList List, int num) { int cnt = 0;//表示當前的位置 LinkList now = List;//用於遍歷連結串列 LinkList p = NULL;//第num個節點的地址 while (now->next != NULL) { now = now->next; cnt++; if (cnt == num)//找到了第num個節點的地址 { p = now; } } //說明找到了第num個節點的地址,並且這個節點不位於連結串列的最末端 if (p != NULL&&p->next != NULL) { LinkList StartNode = List->next;//開始節點 List->next = p->next;//頭節點連線到第num+1個節點 p->next = NULL;//要移動的連結串列斷開與原連結串列的連線 now->next = StartNode;//把開始節點到NUM的資料插入尾 } else { cout << "erro!!!" << endl; } }