1. 程式人生 > >【連結串列】奇怪的體育老師

【連結串列】奇怪的體育老師

奇怪的體育老師(sports.cpp)


題目描述
某班上體育課,已經有部分同學排成一列縱隊,對於後面來的同學,體育老師將他們隨機的插入到某個位置,他的指令為“b K”或者“a K”:表示將後來的同學插入到第K個同學的前面或後面。


n,m<=10000,每個人的名字不超過10個字元。    前          後


輸入
輸入格式:
第一個一個整數n,表示已有n個同學拍成了一列縱隊。接下來n行,每行給出一個同學的名字。
再接下來有m次操作,
每次操作為一行,由三個資料組成,第一個是字串為該生的名字,第二個是一個字元,為b或者a,第三個為一個整數,表示k。如果k大於當前佇列中的人數,則表示把該同學插入到佇列的最後。


輸出
輸出:n+m行,第i行表示佇列中第i個人的名字。


樣例輸入
3
kaka
lenma
Lily
5
roa a 1
meng b 3
caox b 4
hecong a 3
liuxiang b 2


樣例輸出
kaka
liuxiang
roa
meng
hecong
caox
lenma

Lily

-------------------------------------------------------------------------------------

涉及技術:連結串列的建立、插入。

連結串列的建立可以用結構體。結構體成員中,包含兩大板塊、資料域與指標域。

struct node{
int data; //data可以為任何型別,表資料域
node *next //表指標域
};

連結串列的讀入,我們需要3個這樣的結構體,並對他們進行初始化。

node *l, *h1, *h2;

l = h1 = new node; //new為新建一個節點,相當於動態陣列

h2 = l;  //儲存開始的節點

以後,每向連結串列裡新增一個元素,都需要new一次。

然後,便是讀入。

scanf("%d", &l -> data);

h1 = new node;

l -> next = h1;

l = l -> next;

--------------------------------------

連結串列的插入方法如下:

1、新建一個節點;

2、將這個新節點的next指向上一個節點的next。

3、將上一個節點的next指向這個新節點。

4、放入資料。

h1 = new node;

h1 -> next = l -> next;

l -> next = h1;

--------------------------------------

注意讀題!題目中說,只要插入的位置中輸入的數超過隊伍中的人數,不論前面輸入的字元,直接放在最後。