码迷,mamicode.com
首页 > 其他好文 > 详细

1.25

时间:2021-01-26 12:24:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:pre   init   tle   ring   blank   head   指针   初始   cout   

https://www.acwing.com/solution/content/3472/

单链表

#include<iostream>
using namespace std;
const int N=1e6+10;
//      e[N]中存value,ne[N]存下一个结点的下标 
int head,e[N],ne[N],idx,a;
void init()//初始化
{
    head=-1,idx=0;
 } 
 void insert(int a)//头插 
 {    //帮助理解,head是一个指针,指向头节点的下一个节点; 
     e[idx]=a,ne[idx]=head,head=idx++;
 }  //插在下标为k的后面.          
 void add(int k,int x)
 {
     e[idx]=x,ne[idx]=ne[k],ne[k]=idx++;
 }
 void remove(int k) {
     ne[k]=ne[ne[k]];
 }
int main()
{
    init();
    cin>>a;
    while(a--)
    {
        string op;
        int k,x;
        cin>>op;
        if(op=="D")
        {

            cin>>k;
            if(!k)head=ne[head];
            remove(k-1);
        }
        else if(op=="H")
        {
            cin>>x;
            insert(x);
        }
        else if(op=="I"){
            int k,x;
            cin>>k>>x;
            add(k-1,x);
        }
    }
    for(int i=head;i!=-1;i=ne[i])
      cout<<e[i]<<" ";
    return 0;

}

 

1.25

标签:pre   init   tle   ring   blank   head   指针   初始   cout   

原文地址:https://www.cnblogs.com/chouhui/p/14323118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!