首页 > 其他分享 >2024年10月16日总结

2024年10月16日总结

时间:2024-10-16 22:42:58浏览次数:7  
标签:Node 10 head 16 nullptr 链表 next 2024 id

今天英语只复习了单词,由于数据结构需要,下午系统复习了链表方面内容,以下是我整理的一个链表模版。

include

include

using namespace std;
/*
指针可以解决数组增删改麻烦的问题,还有数据的样本量不确定的问题
链表从第一个数据开始,依靠指针遍历;
链表访问某一单个数据,效率不如数组;
数组优势在于元素个数已知情况下;
链表优势在于储存要求不断改变的元素;
链表写成类更方便;
cpp允许人管理内存,这样运算快;

/
class Node {//节点类
public:
string id;//学号
string name;//名字
int age;//年龄
Node
next;//指向下一节点的指针
Node()
{
next = nullptr;
}
void display()
{
cout << id << " " << name << " " << age << endl;
}
};
class Link {
public:
Node* head;
Link() {
//Node n;
//Node* head = &n;//这样生成的n是在栈空间,生命周期结束自动回收,这样写导致head最后指向一个无用的n;
//Node* p = new Node();
// nwew Node;这样也是正确写法;
// Node();正确写法
// Node;错误写法------------------------------区别是什么呢?
//head = p;
head = new Node();
//head->next = nullptr;
//new出来的东西在堆空间,不会快速回收;
//析构函数还有删除节点都是要删除释放new的内存的;不然都不会自动回收;
};
void addNode(Node s) {
Node
p = new Node(s);//这里是用了系统自带的拷贝构造函数?因为不确定s存在哪里,什么时候回收;所以这样写-------------------指针也该再回炉了
p->next = head->next;
head->next = p;
}
void deleteNode(string id) {//链表里删除某一节点是依靠某一特殊值,这里是靠id;(前提是id唯一)
Node* q = head;//伴随指针,永远指着p指向的上一个节点;可以防止单向链表不容易往回走导致的难以删除节点的问题
Node* p = head->next;
while (p!=nullptr) {
if (p->id == id) {
q->next = p->next;
delete p;
//break;id唯一时候直接跳出即可
p = q->next;//p又在q前重新生成了
}
else
{
p = p->next;
q = q->next;//并不改变链表这里,这里只会影响pq指向什么
}
}
}
void modifyNode(string id, int age)
{
Node* p = head->next;
while (p != nullptr)
{
if (p->id == id)
{
p->age = age;
//break;id唯一时候直接跳出即可
}
p = p->next;
}
}
void traverse()
{
Node* p = head->next;
while (p != nullptr)
{
p->display();
p = p->next;
}
}
~Link()//new出来的都要自己删除
{
Node* p = head;
Node* q = nullptr;//wrong time error 运行时错误,不代表编译错误,可能是访问到了空指针指向的地址;re,还有除数为0,数组下标溢出都会导致运行时错误;
while (p != nullptr)
{
q = p->next;
delete p;
Node* p = q;
}
}
};

int main() {
int* p;
p = nullptr;//空指针;nullptr专指空指针防止乱用,易于记住;空指针位于链表末端;

}

标签:Node,10,head,16,nullptr,链表,next,2024,id
From: https://www.cnblogs.com/szxworld/p/18471107

相关文章

  • 10.16 总结
    T1赛时拿的30分暴力,没想到60分,但是预期:30pts,实际:30pts正解把一个人劈成四瓣,然后用树状数组维护不是\(i\)这个人以外的\(0,a_{(i,0)},a_{(i,1)},a_{(i,1)}+a_{(i,0)}\)以上的所有人的个数,最后除以\(16\),就行了。T2赛时时正解,然后因为没有写check然后就小样例......
  • Request -2024/10/16
    请求request在java中获取到前端的数据importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;import......
  • HIAST Collegiate Programming Contest 2024(非完全题解)
    C题HZY做的,等他补题解//#pragmaGCCoptimize("O3,unroll-loops")//#pragmaGCCtarget("avx2,bmi,bmi2,lzcnt,popcnt")////如果在不支持avx2的平台上将avx2换成avx或SSE之一#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecon......
  • UCB CS194/294-196 (LLM Agents) Lecture 4 (2024.10.1)
    预备知识英文缩写&术语英语简中补充LargeLanguageModel(LLM)大语言模型ArtificialGeneralIntelligence(AGI)通用人工智能一个远大的目标Agent智能体/代理Embody具身Multi-AgentSystem(MAS)多智能体系统Token文本分割后得到的最小语义单位Prompt提示词我们向AI提出的......
  • 10月16日 CSP-S
    T1小w的爱情密码【问题描述】小W终于鼓起勇气向小M表白,然而只是有勇气写情书。为了防止情书内容被同学窃取,小W给情书加密。小M的解密方式很简单,假设情书是字符串S1,小W给她的解密串是S2,小M会重复地完成“在S1中找到子串S2并删除”这一操作直到在S1中找不到S2。假如你是小M......
  • Next.js 零基础开发入门教程2 构建基础脚手架 2024最新更新中|曲速引擎 Warp Drive
    开发目标我们将构建一个简化版本的财务仪表板,其内容包括:公共主页、登录页面、受身份验证保护的仪表板页面、用户可以添加、编辑和删除发票这篇文章先创建一个简单的nextjs脚手架页面安装pnpm包管理器接上一篇,开发环境都准备好之后,我们来做创建项目的准备,首先先判断上一篇的环......
  • 20241016每日一题洛谷P1115
    普及-洛谷P1115最大子段和读题可知需要在一段一维数组中寻找一段唯一的区间,使区间内的数和最大,即寻找和最大区间可以想到前缀和的算法假设输入数组a[n]则前缀和数组b[n]=b[n-1]+a[n]那么从什么时候开始的一段区间才能使区间内的数和最大?从前缀和数组逐步来判断这一条......
  • Mazing 3.0.0.3 for Windows 中文绿色版2024最新图文安装教程
    iMazing3.0.0.3forWindows中文版由DigiDNASàrl开发,DigiDNASàrl是一家独立软件开发商,于2008年在瑞士日内瓦成立。在这座坐落在白雪皑皑的阿尔卑斯山附近的安静城市,我们以瑞士工匠的骄傲和精确度编写软件。2008年,我们推出了DiskAid,这是世界上第一个在iPhone和计算机......
  • 2023年 10月自考《软件开发工具》03173试题
    目录一.单选题二.填空题三.简答题四.应用题一.单选题1.软件对可维护性、可重用性的要求越来越高,这是因为A.客观世界的复杂性B.软件的多样性C.客观世界的动态性D.软件的规模性2.时序网络用户描述 P58页A.数据内容B.程序执行的逻辑过程C.数据结果D.系统状态及......
  • 2024超级好用电脑录屏和视频编辑软件Camtasia汉化版下载
    嘿,小伙伴们!......