uva10988(靜態鍊錶)

2021-08-26 23:24:36 字數 1204 閱讀 8331

sample input

this_is_a_[beiju]_text

sample output

beijuthis_is_a__text

題意分析:將中的內容整體移動最左邊

1.考慮用陣列。顯然不行,遇到中的內容需要大量移動元素。考慮極端情況

中的內容全部在最右邊,所以需要一直移動。

2.於是此題的特點就是在陣列中間大量的新增操作。於是想到了使用鍊錶。

此處用靜態鍊錶。

3.其實靜態鍊錶就是模擬動態鍊錶。

一般需要的變數:cur,last,nex

4.變數解釋。cur表示動態鍊錶的最後乙個節點。節點空用0表示。

nex[cur]表示cur的下乙個指標指向,cur表示當前節點下標(相當於動態鍊錶的第i個節點,i=1.2.。。n)

nex[0]相當於頭結點,只存第乙個節點的指標。

last只是在本題中需要。**中說明。

5.於是變數初始化。cur=0, nex[cur]=0.cur=0表示最開始沒有節點

nex[cur]=0表示頭結點指向null

6.於是插入節點有兩種插法,假設插入i節點。i節點的指標指向為nex[i]

一是是尾節點進行插入i。本來是nex[cur] ---> 0

插入**:nex[i] = nex[cur], nex[cur] = i;

二是,在頭結點之後插入節點i,

插入**:nex[i] = nex[cur], nex[cur] = i;

其實 **是一樣的。之後要讓cur = i;指標後移。

其實會動態鍊錶,這個很好理解。

**如下:

*/

#include

using

namespace

std;

const

int maxn = 1e5 + 10;

int nex[maxn];

int cur,last;//c

char ch[maxn];

int main()

}

for(int i=nex[0]; i!=0; i=nex[i])

cout

<< ch[i];

cout

<< endl;

}

return

0;}

UVA 11988 悲劇文字 靜態鍊錶

你有乙個破損的鍵盤。鍵盤上的所有鍵都可以正常工作,但有時home鍵或者end鍵會自 動按下。你並不知道鍵盤存在這一問題,而是專心地打稿子,甚至連顯示器都沒開啟。當你 開啟顯示器之後,展現在你面前的是一段悲劇的文字。你的任務是在開啟顯示器之前計算出 這段悲劇文字。輸入包含多組資料。每組資料佔一行,包含...

uva 11988 鍊錶 OR 塊狀鍊錶

鍊錶寫法 新增加乙個頭結點來使插入操作統一。1 include 2 include 3 include 4 using namespace std 56 const int n 100001 7 char text n 8char str n 9int next n 10int cur,last,b...

鍊錶學習 靜態鍊錶

struct linknode 鍊錶在指定位置插入與刪除元素不需要移動元素,只需要修改指標即可,而陣列刪除與加入元素則需要移動後面的元素,鍊錶相對於陣列來講,則多了指標域空間開銷,拿到鍊錶第乙個節點就相當於拿到整個鍊錶 鍊錶的分類 靜態鍊錶,動態鍊錶 單向鍊錶,雙向鍊錶,迴圈鍊錶,單向迴圈鍊錶,雙向...