• #单链表 Acwing 826. 单链表


    题目

    实现一个单链表,链表初始为空,支持三种操作:
    
    (1) 向链表头插入一个数;
    
    (2) 删除第k个插入的数后面的数;
    
    (3) 在第k个插入的数后插入一个数
    
    现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。
    
    注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。
    
    输入格式
    第一行包含整数M,表示操作次数。
    
    接下来M行,每行包含一个操作命令,操作命令可能为以下几种:
    
    (1) “H x”,表示向链表头插入一个数x。
    
    (2) “D k”,表示删除第k个输入的数后面的数(当k为0时,表示删除头结点)。
    
    (3) “I k x”,表示在第k个输入的数后面插入一个数x(此操作中k均大于0)。
    
    输出格式
    共一行,将整个链表从头到尾输出。
    
    数据范围
    1≤M≤100000
    所有操作保证合法。
    

    .

    输入样例:
    10
    H 9
    I 1 1
    D 1
    D 0
    H 6
    I 3 6
    I 4 5
    I 4 5
    I 3 4
    D 6
    输出样例:
    6 4 6 5
    

    答案

    #include<bits/stdc++.h>
    using namespace std;
    struct Node{
    	int value;
    	int nxt;
    }node[100010];
    int head=0,tail=1,tot=0;
    int main(){
        int m;
        cin>>m;
       
        for(int i=1;i<=m;i++){
            char c;
            cin>>c;
            if(c=='H'){
                int x;
                cin>>x;
                node[++tot].value=x;
                node[tot].nxt=head;
                head=tot;
            }
            else if(c=='D'){
                int k;
                cin>>k;
                if(k)
                node[k].nxt=node[node[k].nxt].nxt;
                else
                head=node[head].nxt;
            }
            else if(c=='I'){
                int k,x;
                cin>>k>>x;
                node[++tot].value=x;
                node[tot].nxt=node[k].nxt;
                node[k].nxt=tot;
            }
        }
            while(head){
            	cout<<node[head].value<<" ";
            	head=node[head].nxt;
            }
        return 0;
    }
    
  • 相关阅读:
    September 22nd 2016 Week 39th Thursday
    September 21st 2016 Week 39th Wednesday
    android 几个小技巧
    深入理解计算机系统----经验之谈
    输入数字如何获取
    super 和this的用法
    java程序员修炼之道
    eclipse 如何使用svn
    如何手动添加Android Dependencies包
    如何查看正在使用端口号并利用任务管理器将其关闭
  • 原文地址:https://www.cnblogs.com/yuanyulin/p/14026792.html
Copyright © 2020-2023  润新知