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