美文网首页
14.单链表

14.单链表

作者: Tsukinousag | 来源:发表于2020-02-18 00:28 被阅读0次

//用数组表示静态链表,相比于动态链表更快,初始化head=-1,indx=0;

注意:下标是从0开始的,所以第k个数,是下标为k-1的数。

三种操作

//头插法

void add_to_head(int x)//头插法
{
    e[idx]=x;
    ne[idx]=head;
    head=idx;
    idx++;
}

//将x插入到下标是k的点后面

void add(int k,int x)
{
    e[idx]=x;
    ne[idx]=ne[k];
    ne[k]=idx;
    idx++;
}

//将下标是k的点的后面的点删掉

void del(int k)
{
    ne[k]=ne[ne[k]];
}

//注意删除操作中,删除头结点时,只需要让头结点指向下下个点即可

     if(!t)//删除头结点
        head=ne[head];

#include <iostream>

using namespace std;

const int N=1e5+10;

int head,idx,e[N],ne[N];

int m;

void init()
{
    head=-1;
    idx=0;
}

void add_to_head(int x)//链表头插入一个元素
{
    e[idx]=x;
    ne[idx]=head;
    head=idx;
    idx++;
}

void add(int k,int x)//将x插到下标是k的点的后面
{
    e[idx]=x;
    ne[idx]=ne[k];
    ne[k]=idx;
    idx++;
}

void remove(int k)//删除第k个节点的后面的节点
{
    ne[k]=ne[ne[k]];
}

int main()
{
    init();
    cin>>m;
    for(int i=0;i<m;i++)
    {
        char c;
        int k,t;
        getchar();
        scanf("%c",&c);
        if(c=='H')//链表头插入一个元素
        {
            scanf("%d",&t);
            add_to_head(t);
        }
        else if(c=='D')
        {
            scanf("%d",&k);//删除第k个插入的数后面的数(当k为0时,表示删除头结点)
            if(!k)  head=ne[head];
            remove(k-1);
        }
        else if(c=='I')//在第k个插入的数后面插入一个数x(此操作中k均大于0)
        {
            scanf("%d%d",&k,&t);
            add(k-1,t);
        }
    }
    
    for(int i=head;i!=-1;i=ne[i])   cout<<e[i]<<" ";
    
    return 0;
}

相关文章

  • 14.单链表

    //用数组表示静态链表,相比于动态链表更快,初始化head=-1,indx=0; 注意:下标是从0开始的,所以第k...

  • 单链表 C++

    单链表 C++ 题目 1、创建单链表2、初始化单链表3、释放单链表4、获取单链表中元素的数量5、输出单链表中的所有...

  • 线性表:顺序表和链表

    顺序表(数组)优缺点 链表优点 单链表使用 单链表结构 单链表初始化 单链表初始化 单链表建立: 头插法 尾插法 ...

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 链表基本操作

    1、删除单链表节点 2、插入单链表结点 单链表具体实现

  • 25_静态单链表的实现

    关键词: 单链表的一个缺点、静态单链表设计思路、静态单链表的继承层次结构、静态单链表的实现思路、静态单链表的实现 ...

  • 线性表的链式存储-单链表

    单链表操作 [x] 单链表的创建(尾插法、头插法) [x] 单链表的查找操作 [x] 单链表的删除操作 [x] 单...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

  • 单链表反转

    单链表 单链表反转 递归方法

  • JavaScript数据结构2——单链表

    以下的代码包括了以下几部分 单链表初始化 单链表的插入 单链表的删除 单链表的创建(头插法) 单链表的创建(尾插法...

网友评论

      本文标题:14.单链表

      本文链接:https://www.haomeiwen.com/subject/vjjwfhtx.html