c++中的链表

链表

总论

顾名思义,所谓链表就是一条链。
在c++中一般使用结构体来存储链表。
链表用一张图(来自《算法竞赛上册》)可以很好的理解
pkNNuKe.png

上述为链表的存储原理,通过该原理,我们可以以此类推得到链表的插入与删除的原理
对于插入与删除,其本质就是维护存储链表中的next与pre值。
我们可以通过以下两图来知晓插入与删除的操作

插入
pkNUCz8.png

删除
在这里插入图片描述

c++中的用法

    struct Node
    {
   
        int value;//当前位置的值
        int prev/*当前位置的上一位的ID*/,next/*下一个位置的ID*/;
    } node[100005];

例题

P1160 队列安排

思路

由于题目所给的信息

  • 2∼N 号同学依次入列,编号为
    i 的同学入列方式为:老师指定编号为 i 的同学站在编号为
    1∼(i−1) 中某位同学(即之前已经入列的同学)的左边或右边;

由此可以看出该题所给的数据是链状,便是用链表

AC代码
#include<bits/stdc++.h>
using namespace std;
struct Node
{
   
    int value;
    int prev,next;
} node[100005];
int c,n,m,a,b,tot,d;
int right(int p,int val)
{
   
    node[node[p].next].prev=node[val].value ;
    node[val].next=node[p].next ;
    node[p].next=node[val].value ;
    node[val].prev=node[p].value ;
}
int left(int p,int val)
{
   
    node[node[p].prev].next=val;
    node[val].prev=node[p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值