zoukankan      html  css  js  c++  java
  • #单链表 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;
    }
    
  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/yuanyulin/p/14026792.html
Copyright © 2011-2022 走看看