WHU1478----2014年武大邀请赛H题----双向链表
来源:互联网 发布:windows系统资源监控 编辑:程序博客网 时间:2024/05/31 00:39
题目地址:http://acm.whu.edu.cn/land/problem/detail?problem_id=1478
这个题目的意思很简单,提供几种操作
光标左移,右移
插入一个字母
删除一个字母
这个完全可以利用双向链表来模拟,左移就将指针左移,右移同理
建立一个空头的双向链表,每当要插入的时候在当前光标的后面插入
如果需要删除的话,就将当前光标的内容删除,并将pos往前移,即指向前一个。
另外,如果光标在头,那就不动了,我一开始将删除理解层了del,但应该是backspace,所以,到头了就无法backspace了
并且因为你每次都要申请空间,那么每一组数据后,显示之后要记得清空空间,不然要MLE的。
下面上我的代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 1000000+10;char a[maxn];int t;struct node{ char data; node * pre; node * next;};void out(node *h){ while(h->next != NULL) { node *p=h; h=h->next; printf("%c",h->data); delete p; }}int main(){ scanf("%d",&t); for(int ca=1;ca<=t;ca++) { scanf("%s",a); int len = strlen(a); node *head = new node; head->data = NULL; head->pre = NULL; head->next = NULL; node *pos = head; for(int i=0;i<len;i++) { //cout<<"i "<<a[i]<<endl; if(a[i] == '<') { if(pos->pre != NULL) { pos = pos->pre; } } else if(a[i] == '>') { if(pos->next != NULL) pos = pos->next; } else if(a[i] == '-') { if(pos->data !=NULL) { if(pos->next == NULL) { node *f=pos->pre; f->next = NULL; node *tmp = pos; pos = f; delete tmp; } else { node *f=pos->pre; node *n=pos->next; node *t=pos; f->next = n; n->pre = f; pos = f; delete t; } } } else { node *in = new node; in->data = a[i]; node *n = pos->next; in->next = n; if(n!=NULL)n->pre = in; pos->next = in; in->pre = pos; pos=in; } } printf("Case %d: ",ca); out(head); printf("\n"); } return 0;}
- WHU1478----2014年武大邀请赛H题----双向链表
- 长沙邀请赛 H题
- 整理一个双向链表list.h
- 双向链表list.h升序排序
- 2017 湘潭大学邀请赛H题--Highway
- HDOJ Page Rank 5097【2014上海邀请赛H题-简单矩阵】
- 内核双向链表list.h中的list_entry
- 浅谈list.h头文件之双向循环链表
- 链表-H-双向链表,允许前后遍历
- ACM-ICPC 2014北京邀请赛 H Happy Reverse [模拟]
- 第36届ACM 北京区域赛邀请赛 H题
- 2016年武汉科技大学邀请赛网络赛 H题
- 2013芝加哥邀请赛H题-Overlapping Maps-计算几何
- 2017 湘潭大学邀请赛/江苏省省赛 H题 Highway
- 北京邀请赛 H. Happy Reversal
- linux 2.4内核中双向链表的实现/include/linux/list.h
- redis源码解读之双向链表————adlist.h文件
- Linux 内核中双向链表及list.h 文件分析
- ios--Blocks与Dispatch Queue的使用
- cocos2d-x的触摸消息分发机制
- HDU3555
- Linux操作系统中的7功能详解
- 二维数组中的查找 九度Online Judge
- WHU1478----2014年武大邀请赛H题----双向链表
- The number of divisors(约数) about Humble Numbers
- ssh 简单安全策略
- Ubuntu - 修改root用户密码Ubuntu10.04
- Java内存泄露的理解与解决
- ZOJ 1202Divide and Count
- 结构体函数在Java中的运用
- SystemTime_Difference
- 给BT5设置ssh服务