UVa11988 鍊錶簡單應用

2021-08-15 09:21:26 字數 1187 閱讀 4555

這題嘗試了兩種方法,一是書上說的用陣列來實現鍊錶相關操作,一種是利用指標形式的鍊錶實現

1.使用字元陣列c儲存一行中每個字元的值

2.使用陣列next儲存下乙個字元的位置,可以看成c[i]和next[i]共同構成鍊錶中的乙個結點(所以next[0],c[0]對應的是頭節點)

3.設當前字元的上個字元所在位置為cur初始值為0,當字元不是『[『和』]』時利用cur做普通的插入操作。當字元是『[『時,cur=0.當字元是『]』時,cur等於最後乙個字元編號last

4.最後輸出

#include

#include

using

namespace

std;

int main()

for (int i = 1; i <= len; i++)

else

if (c[i] == ']')

else

}for (int i = next[0]; i!=0; i=next[i])

cout

<< endl;

}system("pause");

return

0;}

要注意的是,當碰到『]』需要移動到文字結尾的時候,本來我是想通過遍歷當前鍊錶,找到最後乙個節點,並返回指標來實現的,不過發現似乎會超時。所以還是定義了乙個last節點,專門儲存最後乙個節點的值

#include

#include

using namespace std;

typedef struct linknode

}node;

class list

~list()

}node* returnhead()

node* returntail()

return p;

}node* insert(node *cur,node *needin)

void printlist()

}};int main()

else

if (input[i] == ']')

else

else}}

lista.printlist();

cout << endl;

}system("pause");

return

0;}

UVA 11988 鍊錶

之前遇到字典樹什麼的要不就用指標鍊錶,要不直接上list。陣列鍊錶主要思想和指標差不多。指標是用 next記錄下乙個的位址然後形成鏈。陣列本身開闢空間時便是乙個位址所以也可以達到這點。仔細分析一下陣列a的下標再不斷增大,但是記錄的資料卻在更新。所以可以大致寫出 int next 11 int now...

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...

UVA 11988 悲劇文字 靜態鍊錶

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