【链表】奇怪的体育老师

奇怪的体育老师(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;

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

注意读题!题目中说,只要插入的位置中输入的数超过队伍中的人数,不论前面输入的字符,直接放在最后。

猜你喜欢

转载自blog.csdn.net/C20181503csy/article/details/52806318
今日推荐