問題 B DS單鏈表 結點交換

2021-10-22 10:32:54 字數 1592 閱讀 8346

問題 b: ds單鏈表–結點交換

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

用c++實現含頭結點的單鏈表,然後實現單鏈表的兩個結點交換位置。

注意不能簡單交換兩個結點包含資料,必須通過修改指標來實現兩個結點的位置交換

交換函式定義可以參考:

swap(int pa, int pb) //pa和pb表示兩個結點在單鏈表的位置序號

swap (listnode * p, listnode * q) //p和q表示指向兩個結點的指標

輸入第1行先輸入n表示有n個資料,接著輸入n個資料

第2行輸入要交換的兩個結點位置

第3行輸入要交換的兩個結點位置

輸出第一行輸出單鏈表建立後的所有資料,資料之間用空格隔開

第二行輸出執行第1次交換操作後的單鏈表資料,資料之間用空格隔開

第三行輸出執行第2次交換操作後的單鏈表資料,資料之間用空格隔開

如果發現輸入位置不合法,輸出字串error,不必輸出單鏈表

樣例輸入

5 11 22 33 44 55

1 42 6

樣例輸出

11 22 33 44 55

44 22 33 11 55

error

提示注意要用鍊錶實現哦!

#include

#include

#include

#include

using

namespace std;

class

listnode};

class

linklist

;linklist::

linklist()

linklist::

~linklist()

len =0;

head =

null;}

void linklist::

ll_display()

cout << endl;

}int linklist::

ll_insrt

(int i,

int item)

} now =

new listnode;

now-

>data = item;

pre-

>next = now;

now-

>next = cur;

len++

;return1;

}listnode* linklist::

ll_index

(int i)

}return cur;

}int linklist::

ll_get

(int i)

}return cur-

>data;

}int

main()

p.ll_display()

;for

(int i =

0; i <2;

++i)

else

p.ll_display()

;}else

}return0;

}

DS單鏈表 結點交換

題目 問題 b ds單鏈表 結點交換 時間限制 1 sec 記憶體限制 128 mb 提交 555 解決 385 提交 狀態 討論版 題目描述 用c 實現含頭結點的單鏈表,然後實現單鏈表的兩個結點交換位置。注意不能簡單交換兩個結點包含資料,必須通過修改指標來實現兩個結點的位置交換 交換函式定義可以參...

基礎資料結構 線性表 單鏈表的結點交換

實現單鏈表,含頭結點 屬性包括 data資料域 next指標域 操作包括 插入 刪除 查詢 注意 單鏈表不是陣列,所以位置從1開始對應首結點,頭結點不放資料輸入n 第1行先輸入n表示有n個資料,接著輸入n個資料 第2行輸入要插入的位置和新資料 第3行輸入要插入的位置和新資料 第4行輸入要刪除的位置 ...

單鏈表進行排序 通過節點交換,不通過值交換

原來我一直都不會對鍊錶進行排序,呵呵,比較菜。今天下了很大的功夫學習對鍊錶的排序,和大家分享一下!對鍊錶的排序主要有兩種方法 一 只交換節點中的元素,不改變鍊錶的順序。二 直接交換節點,不改變節點中的元素。其中交換節點是最麻煩的,稍不注意就會出錯!而交換節點中的元素還是比較簡單的。用幾個swap 就...