uva11988 broken keyboard (悲剧文本)

你有一个破损的键盘,所有键都能正常工作,但是home 和 end键有时会自动按下,你并不知道这一问题的存在,专心打稿子,甚至屏幕都没有开,当你打开屏幕时,屏幕上是悲剧文本,你的任务是计算出这段悲剧文本。

样例输入

This_is_a_[Beiju]_text

[[]][][]Happy_Birthday_to_Tsinghua_University

样例输出

BeijuThis_is_a__text

Happy_Birthday_to_Tsinghua_University

思路:一个一个的取字符,然后插入到光标位置,必须用链表实现,用数组要频繁移动元素,会超时。

指针链表:

#include
#include
using namespace std;
struct node
{
	char c;
	node *next;
}; 
int main()
{
	string s;
	node *head ,*tail,*p;
	while(cin>>s)
	{
		p=new node;
		p->next=NULL;
		int len = s.size();
		head=tail=p;//在未插入元素之前,链表有一个头结点,此头节点的下一个元素为第一个元素 
		for(int i=0;ic=ch;
				
				np->next = p->next;//在p之后插入结点  
				p->next = np;
				p=np;

				if(p->next==NULL)tail = p;//记录尾节点 
			}
		}
		node *q = head->next;
		node *pre;
		while(q!=NULL)
		{
			cout<c;
			pre=q;
			q = pre->next;
			delete pre;
		}
		delete head;
		cout<



stl list:

#include
#include
#include
#include
using namespace std;
const int maxn = 100000+5;
int main()
{
	list l;
	char s[maxn];
	while(scanf("%s",s)==1)
	{
		int n=strlen(s);
		list::iterator it=l.begin();
		for(int i=0;i

你可能感兴趣的:(——数据结构——,字符串处理)