首页 > 其他分享 >day4-1

day4-1

时间:2024-10-08 23:10:42浏览次数:9  
标签:Node head int day4 cin next current

今天完成了C语言作业,学习了有关链表的知识;其中部分代码如下:

include

include

using namespace std;

// 定义链表节点
struct Node {
int data;
Node* next;
Node(int d) : data(d), next(nullptr) {}
};

// 定义链表
class LinkedList {
public:
Node* head = nullptr;

// 插入节点
void insert(int k, int d) {
    Node* newNode = new Node(d);
    if (k == 0) {
        newNode->next = head;
        head = newNode;
    } else {
        Node* current = head;
        for (int i = 1; current != nullptr && i < k; i++) {
            current = current->next;
        }
        if (current != nullptr) {
            newNode->next = current->next;
            current->next = newNode;
        }
    }
}

// 删除节点
void remove(int k) {
    if (k == 1 && head) {
        Node* temp = head;
        head = head->next;
        delete temp;
    } else {
        Node* current = head;
        for (int i = 1; current != nullptr && i < k - 1; i++)
            current = current->next;
        if (current && current->next) {
            Node* temp = current->next;
            current->next = temp->next;
            delete temp;
        }
    }
}

// 打印链表
void print() {
    Node* current = head;
    while (current) {
        cout << current->data << " ";
        current = current->next;
    }
    cout << endl;
}

};

int main() {
int n, m, k, d, op;
cin >> n;
LinkedList list;
for (int i = 0; i < n; i++) {
cin >> d;
list.insert(i, d);
}
cin >> m;
for (int i = 0; i < m; i++) {
cin >> op;
if (op == 0) {
cin >> k >> d;
list.insert(k, d);
} else if (op == 1) {
cin >> k;
list.remove(k);
}
}
list.print();
return 0;
}

标签:Node,head,int,day4,cin,next,current
From: https://www.cnblogs.com/old-tom/p/18453246

相关文章

  • NOIP2024集训 Day47 总结
    前言人有两次生命,当他意识到只有一次的时候,第二次生命就开始最小生成树和二分图匹配专题,感觉总体都比较套路。但是这些套路为啥感觉见都没见过啊,怪不得做这么慢。色观察到对于最终答案显然都是最小生成树上一条两个端点颜色不同的边。而这个题并不会改变图的形态,仅仅是改......
  • NOIP2024集训Day47 生成树+二分图
    NOIP2024集训Day47生成树+二分图B.[THUPC2022初赛]最小公倍树直接建边显然不行,考虑优化建边。对于两个点\(u,v\),\((u,v)\)的边权为\(\displaystyle\operatorname{lcm}(u,v)=\frac{u\timesv}{\gcd(u,v)}\),显然应该选择\(\gcd(u,v)\)尽可能大的点对连边,也就是......
  • NOIP2024集训Day44-45
    \(\textup{反色刷}\)欧拉回路。有解:每个点连接的黑边数为偶数答案个数:连通块数如果一个连通块内有两条路径,则可以在起点之间走两次,则它们一定可以合并成一条。\(\textup{骑士游戏}\)看起来很有让人dp的冲动。假设可以用dp。\(f_u\):消灭\(u\)的最小代价。\[f_u=\m......
  • 代码随想录算法训练营day4|● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个
    学习资料:https://programmercarl.com/0024.两两交换链表中的节点.html学习记录:24.两两交换链表中的节点(添加虚拟头节点;交换1、2节点和3、4节点时,要用1前面的cur,先保存1为temp且3保存为temp1,cur指向2,再把2指向temp,因为cur指向2后就与1没关联了)点击查看代码#Definitionforsi......
  • Day44~45 图论回顾
    P6628[省选联考2020B卷]丁香之路枚举每个终点,先向\(s\)额外加一条边,就等价于求最小的欧拉回路。(根据图的性质,不走重复路一定更优)刚开始的\(m\)条边必定会组成一系列的连通块,我们还要加边使之联通。又要满足无向图欧拉回路的性质。也就是每个点的度数为偶数。你考虑直......
  • NOIP2024集训Day43 博弈论
    NOIP2024集训Day43博弈论F.多边形之战如果这个三角形三个顶点相邻,则先手必胜(第一刀就可以切)否则当黑色三角形只有一边与白色三角形相邻时才可以被切,显然那个白色三角形是最后一个白色三角形于是转化为:有\(n\)个石子,一次只能取一个,问取最后一个的人是谁做完了。G.[BZO......
  • 【题解】Solution Set - NOIP2024集训Day42 博弈论
    【题解】SolutionSet-NOIP2024集训Day42博弈论https://www.becoder.com.cn/contest/5574https://www.cnblogs.com/CloudWings/p/17813917.html「中山市选2009」谁能赢呢?一道经典的「二分图博弈」在棋盘问题上的应用。https://www.luogu.com.cn/article/h8a79k3i......
  • 正睿csp-s7连测 day4
    注:未登录正睿OI账号则看不了题目。day4A难度:蓝-紫考虑贪心。考虑优先选当前能连到了最小的点,但是这样会被样例卡疯。考虑加一点策略。首先,若当前选到的点权大于其儿子的点权,那肯定把儿子也选上了,不然就不优了。然后树上就会出现一些团。现在假设一个点下面连着两个团,考虑......
  • Day4 C++(运算符重载,模板与容器)(友元函数,运算符重载,赋值运算符,string字符串类,模板)
    1.友元friend1.1概念(掌握)定义:类实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,仅能通过类的成员函数才能读写。如果数据成员定义为公共的,则又破坏了封装性。但是某些情况下,需要频繁读写类的成员,特别是在对某些成员函数多次调用时,由于参数传递、类型检查和安全......
  • DAY4 收获
    输入与输出输出print()内置函数提供在控制台输出打印数据基本输出:print("helloworld!")   #输出结果:helloworld!输出变量:a=10b=20print(a,b)     #输出结果:1020改变输出分隔符(默认为空格):print("111","222","333",sep="_")  #输......