I - Keylogger Gym - 101078I——模拟队列+栈

小鱼儿 2022-06-11 06:58 244阅读 0赞

Think:
1知识点:模拟队列+栈
2题意分析:字母输入移动,分别用队列记录输入光标之前内容,用栈记录光标之后可能存在的内容
3其余思路:链表模拟插入结点删除结点

vjudge题目链接

以下为Accepted代码

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <stack>
  5. using namespace std;
  6. int op, tp;
  7. char link[1001400], st[1001400];
  8. int main(){
  9. int T, i;
  10. scanf("%d", &T);
  11. while(T--){
  12. op = tp = 0;
  13. stack <char> sta;
  14. while(!sta.empty()){
  15. sta.pop();
  16. }
  17. scanf("%s", st);
  18. int len = strlen(st);
  19. for(i = 0; i < len; i++){
  20. if(st[i] == '-'){
  21. if(tp > 0)
  22. tp--;
  23. }
  24. else if(st[i] == '<'){
  25. if(tp > 0){
  26. sta.push(link[tp-1]);
  27. tp--;
  28. }
  29. }
  30. else if(st[i] == '>'){
  31. if(!sta.empty()){
  32. link[tp++] = sta.top();
  33. sta.pop();
  34. }
  35. }
  36. else {
  37. link[tp++] = st[i];
  38. }
  39. }
  40. bool flag = false;
  41. for(i = 0; i < tp; i++)
  42. printf("%c", link[i]);
  43. while(!sta.empty()){
  44. flag = true;
  45. printf("%c", sta.top());
  46. sta.pop();
  47. }
  48. if(tp || flag)
  49. printf("\n");
  50. }
  51. return 0;
  52. }

发表评论

表情:
评论列表 (有 0 条评论,244人围观)

还没有评论,来说两句吧...

相关阅读

    相关 i = &i

    // 偶然的在网上看到这么个问题, 问下列程序有没有一错误. include <stdio.h> int main(void) {