DS單鏈表 結點交換

2021-10-10 13:47:07 字數 1689 閱讀 1960

題目:

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

時間限制:

1 sec 記憶體限制:

128 mb

提交:555 解決:

385[提交]

[狀態]

[討論版]

題目描述

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

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

交換函式定義可以參考:

swap(int pa,

int pb)

//pa和pb表示兩個結點在單鏈表的位置序號

swap (listnode * p, listnode * q)

//p和q表示指向兩個結點的指標

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

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

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

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

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

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

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

樣例輸入511

2233

445514

26樣例輸出

1122

3344

5544

2233

1155

error

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

**塊:
#include

using

namespace std;

class

listnode};

class

linklist

;linklist::

linklist()

linklist::

~linklist()

len =0;

head =

null;}

listnode * linklist::

index

(int i)

return p;

}void linklist::

createlist

(int n)

}void linklist::

display()

cout<}int

main

(void

) listnode *p = l.

index

(a-1);

listnode *q = p-

>next;

p->next = q-

>next;

listnode *r = l.

index

(b-2);

listnode *s = r-

>next;

r->next = s-

>next;

s->next = p-

>next;

p->next = s;

q->next = r-

>next;

r->next = q;

l.display()

;}return0;

}

題解:

結點交換可以理解為先刪除兩個結點,再換位插入。

問題 B DS單鏈表 結點交換

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

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

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

DS之單鏈表

單鏈表概述 線性表的順序表的優點是隨機訪問表中的任意元素,但是它的缺點也是明顯的,那就是在進行基本操作中的向順序表中插入和刪除資料元素時需要移動大量的元素。因此產生線性表的另一種鏈式儲存結構,也就是單鏈表。它沒有順序表的弱點,但是也失去了順序表的優點。線性表的鏈式儲存結構的特點是用一組任意的儲存單元...