当前位置: 首页 > news >正文

数据结构上机练习——单链表的基本操作、头文件、类定义、main函数、多种链表算法的实现,含注释

文章目录

  • 单链表的基本操作实现
    • 1.头文件
    • 2.类定义和多种算法的实现
      • 2.1创建空表
      • 2.2头插法创建n个元素的线性链表
      • 2.3一个带头节点的链表存放一组整数,设计一个算法删除值等于x的所有节点。
      • 2.4计算线性表中值为偶数的节点个数
      • 2.5一个带头节点的单链表heada存放一组整数,设计分裂heada算法,偶数放在heada中,奇数放在headb中
    • 3.main函数和源码实现
      • 3.1测试实现:
      • 3.2LinkList.h
      • 3.3test.cpp

单链表的基本操作实现

1.头文件

  头文件和源文件分开有很多好处:可以提高编译速度、提高代码的可维护性、提高代码的可重用性和可扩展性,同时也可以使代码结构更清晰,方便代码的管理和维护。

LinkList.h

#pragma once#include<assert.h>//定义单链表节点
typedef struct LNode
{int data;LNode* next;}LNode;

test.cpp

#include<iostream>
using namespace std;#include"LinkList.h"

             

2.类定义和多种算法的实现

  (下面所有函数都默认在类中实现)

  我们以带头单向非循环链表为例:

  带头单向非循环链表是一种链表数据结构,其中每个节点包含一个数据域和一个指向下一个节点的指针域。在这种链表中,有一个特殊的节点称为头节点,它指向链表的第一个节点。头节点不是链表的一部分,仅用于方便操作。

在这里插入图片描述

             

2.1创建空表

  我们定义了一个名为LinkList的类,代表一个单链表。这个类有两个私有成员:一个指向LNode类型的指针_head,代表链表的头节点,以及一个整型变量_size,代表链表的大小。

//定义单链表类
class LinkList
{
public://默认构造函数LinkList(){_head = new LNode(0);//创建头结点(哨兵位节点)_size = 0;}private:LNode* _head;int _size;
};

             

2.2头插法创建n个元素的线性链表

  先以头插单个元素为例:

  我们可以先创建一个新的节点来存储该元素。然后,检查链表是否为空,如果为空,则新节点就是链表的第一个节点; 否则,新节点将插入到当前头节点的后面。插入完成后,_size(代表链表元素个数的变量)加1。

void push_front(const int& val)
{//创建一个插入的新节点,将要插入的值val赋值给它LNode* newnode = new LNode(val);LNode* cur = _head->next;//保存原来第一个结点//进行头插操作_head->next = newnode;_head->next->next = cur;//连接原来的第一个节点_size++;
}

  加上n循环即可实现头插法创建n个元素的线性链表

//头插法创建n个元素
void push_front_n()
{cout << "请输入要插入的元素个数:";int n;cin >> n;cout << endl;cout << "输入要插入的元素:";while (n){int tmp;cin >> tmp;push_front(tmp);n--;}
}

             

2.3一个带头节点的链表存放一组整数,设计一个算法删除值等于x的所有节点。

  无返回值版本

  我们先检查链表是否为空,如果为空,则输出一条错误消息并返回。如果链表非空,它开始遍历链表,检查每个节点的下一个节点是否为要删除的节点。如果是,则删除该节点并释放其内存;如果不是,则移动到下一个节点。 在遍历过程中,保持对当前节点的引用,以防止删除连续的要删除的节点时出现问题。

	//删除所有x的节点
void erase_all_x(int x)
{LNode* cur = _head;if (cur->next == nullptr)//判断是否为空链表{cout << "该链表为空不可删除\n";return;}else{while (cur && cur->next)//删除的数据有可能连续,所以最好保持当前节点{if (cur->next->data == x)//如果下一个节点为要删除节点{LNode* tmp = cur->next;//用临时指针保存要删除的节点cur->next = cur->next->next;//链表指向删除节点的下一个节点delete tmp;//删除节点中的元素tmp = nullptr;}else//如果下个节点不是删除节点,那直接指向下个节点{cur = cur->next;}}}
}

  有返回值版本

//删除所有x的节点,有删除节点返回true,无删除节点返回false
bool erase_all_x(int x)
{LNode* cur = _head;if (cur->next == nullptr){cout << "该链表为空不可删除\n";return false;}else{int count = 0;//设计一个计数器,统计是否有删除的节点while (cur && cur->next)//删除的数据有可能连续,所以最好保持当前节点{if (cur->next->data == x){count++;//有删除的节点,count++LNode* tmp = cur->next;cur->next = cur->next->next;//删除x节点delete tmp;tmp = nullptr;}else//如果下个节点不是删除节点,那直接指向下个节点{cur = cur->next;}}if (count == 0)//count==0,则没有可以删除的节点{cout << "链表中没有可以删除的元素" << endl;return false;}return true;}
}

             

2.4计算线性表中值为偶数的节点个数

  我们定义函数用于遍历链表并计算其中偶数节点的数量。首先,它检查链表是否为空,如果为空,则输出一条错误消息。如果链表非空,它开始遍历链表,检查每个节点的数据是否为偶数。如果是偶数,则计数器加1。 遍历完成后,输出链表中偶数节点的数量。

//打印链表中值为偶数的节点个数
void print_even_number()
{LNode* cur = _head->next;int count = 0;if (cur == nullptr){cout << "该链表为空,没有节点\n";}else//核心就在不断通过指针遍历寻找即可{while (cur)//遍历链表中的每一个节点{if (cur->data % 2 == 0){count++;//如果cur为偶数,计数++;}cur = cur->next;}cout << "该链表中偶数节点的个数为:" << count << endl;}
}

             

2.5一个带头节点的单链表heada存放一组整数,设计分裂heada算法,偶数放在heada中,奇数放在headb中

  我们定义该函数用于将链表中的偶数节点和奇数节点分开,使得偶数节点在heada链表中,奇数节点在headb链表中。

  函数使用两个指针cur1和cur2分别遍历heada和headb链表。在遍历过程中,如果当前节点的下一个节点是偶数节点,则保持原链表不变,移动cur1指针;

  如果当前节点的下一个节点是奇数节点,则将其从原链表中删除,并添加到headb链表的末尾,同时移动cur1和cur2指针。 最后,函数返回修改后的heada和headb链表。

//分裂链表,偶数在heada中,奇数在headb中
void divide_LinkList(LNode* heada, LNode* headb)
{LNode* cur1 = heada;LNode* cur2 = headb;while (cur1 && cur1->next)//退出循环的条件要cur1和cur1下个节点不为空{if (cur1->next->data % 2 == 0)//为偶数原链表不变{cur1 = cur1->next;//cur1直接向后移动}else//若链表为奇数,需要移动放入headb中{//交换链表节点操作LNode* tmp = cur1->next;cur1->next = cur1->next->next;//调整cur2,使其获得cur1的节点,断开cur1节点的后面节点的连接cur2->next = tmp;cur2->next->next = nullptr;//cur1和cur2各向后移动cur2 = cur2->next;}}
}

             

3.main函数和源码实现

3.1测试实现:

test_LinkList1();
在这里插入图片描述

test_LinkList2();
在这里插入图片描述

test_LinkList3();
在这里插入图片描述

             

3.2LinkList.h

#pragma once#include<assert.h>//定义单链表节点
typedef struct LNode
{int data;LNode* next;LNode(const int& val):data(val), next(nullptr){}}LNode;//定义单链表类
class LinkList
{
public://默认构造函数LinkList(){_head = new LNode(0);//创建头结点(哨兵位节点)_size = 0;}//拷贝构造函数 lt1(lt)LinkList(const LinkList& lt){LNode* oldcur = lt._head->next;//这个this指针是新建的链表lt1的this->_head = new LNode(0);this->_size = 0;LNode* newcur = _head;while (oldcur)//深拷贝以完成链表的赋值操作{//将旧链表中的值赋值到新链表中LNode* tmp = new LNode(oldcur->data);//向后移动新旧链表节点newcur->next = tmp;newcur = newcur->next;oldcur = oldcur->next;_size++;}}//析构函数~LinkList(){LNode* cur = _head->next;while (cur){LNode* tmp = cur;cur = cur->next;delete tmp;tmp = nullptr;}}//单链表打印void print(){LNode* cur = _head->next;if (cur == nullptr){cout << "该单链表为空\n";}else{cout << "该单链表中的元素为:";while (cur){printf("%d->", cur->data);cur = cur->next;}cout << "NULL\n";}}//单链表尾插void push_back(const int& val){LNode* newnode = new LNode(val);LNode* cur = _head;while (cur && cur->next)//找到尾结点{cur = cur->next;}cur->next = newnode;//尾插_size++;}//单链表头插void push_front(const int& val){LNode* newnode = new LNode(val);LNode* cur = _head->next;_head->next = newnode;_head->next->next = cur;_size++;}//单链表尾删void pop_back(){LNode* cur = _head->next;LNode* prev = _head;if (cur == nullptr){cout << "单链表为空不可删除\n";}else{while (cur && cur->next)//找到尾结点和前一个节点{cur = cur->next;prev = prev->next;}prev->next = nullptr;delete cur;cur = nullptr;_size--;}}//单链表头删void pop_front(){LNode* cur = _head->next;if (cur == nullptr){cout << "单链表为空不可删除\n";}else{_head->next = cur->next;delete cur;cur = nullptr;_size--;}}//头插法创建n个元素void push_front_n(){cout << "请输入要插入的元素个数:";int n;cin >> n;cout << endl;cout << "输入要插入的元素:";while (n){int tmp;cin >> tmp;push_front(tmp);//LNode* newnode = new LNode(tmp);//LNode* cur = _head->next;//if (cur == nullptr)//{//	_head->next = newnode;//}//else//{//	newnode->next = cur;//	_head->next = newnode;//}n--;//_size++;}}//删除第n个元素void erase(int n){assert(n > 0 && n <= _size);LNode* cur = _head;if (cur->next == nullptr){cout << "该链表为空不可删除\n";return;}else{LNode* tmp = cur;while (n)//找到删除节点的前一个位置{tmp = cur;cur = cur->next;n--;}tmp->next = tmp->next->next;delete cur;cur = nullptr;}}//单链表节点个数void print_size(){cout << "单链表节点个数为:" << _size << endl;}//删除所有x的节点,有删除节点返回true,无删除节点返回falsebool erase_all_x(int x){LNode* cur = _head;if (cur->next == nullptr){cout << "该链表为空不可删除\n";return false;}else{int count = 0;//设计一个计数器,统计是否有删除的节点while (cur && cur->next)//删除的数据有可能连续,所以最好保持当前节点{if (cur->next->data == x){count++;//有删除的节点,count++LNode* tmp = cur->next;cur->next = cur->next->next;//删除x节点delete tmp;tmp = nullptr;}else//如果下个节点不是删除节点,那直接指向下个节点{cur = cur->next;}}if (count == 0)//count==0,则没有可以删除的节点{cout << "链表中没有可以删除的元素" << endl;return false;}return true;}}//打印链表中值为偶数的节点个数void print_even_number(){LNode* cur = _head->next;int count = 0;if (cur == nullptr){cout << "该链表为空,没有节点\n";}else{while (cur)//遍历链表中的每一个节点{if (cur->data % 2 == 0){count++;//如果cur为偶数,计数++;}cur = cur->next;}cout << "该链表中偶数节点的个数为:" << count << endl;}}//返回当前链表的头结点LNode* get_head(){return _head;}//分裂链表,偶数在heada中,奇数在headb中void divide_LinkList(LNode* heada, LNode* headb){LNode* cur1 = heada;LNode* cur2 = headb;while (cur1 && cur1->next){if (cur1->next->data % 2 == 0)//为偶数原链表不变{cur1 = cur1->next;}else//若链表为奇数,需要移动放入headb中{//交换链表节点操作LNode* tmp = cur1->next;cur1->next = cur1->next->next;cur2->next = tmp;cur2->next->next = nullptr;//cur1和cur2各向后移动cur2 = cur2->next;}}}private:LNode* _head;int _size;
};

             

3.3test.cpp

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>
using namespace std;#include"LinkList.h"void test_LinkList1()
{LinkList lt;//链表打印lt.print();//测试空链表删除lt.pop_front();//尾插lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.print();//头插lt.push_front(5);lt.push_front(6);lt.push_front(7);lt.push_front(8);lt.print();//打印链表节点lt.print_size();//尾删lt.pop_back();lt.pop_back();lt.print();//头删lt.pop_front();lt.pop_front();lt.print();lt.print_size();
}void test_LinkList2()
{//头插法创建n个元素的链表LinkList lt;lt.push_front_n();lt.print();lt.print_size();
}void test_LinkList3()
{LinkList lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);lt.push_back(7);lt.push_back(8);lt.push_back(9);lt.push_back(10);lt.print();lt.print_size();lt.push_back(6);lt.push_back(6);lt.push_back(6);//删除第11节点的元素lt.erase(11);lt.print();//删除所有元素为6的节点cout << "是否删除成功:" << lt.erase_all_x(6) << endl;lt.print();cout << "是否删除成功:" << lt.erase_all_x(6) << endl;lt.print();//打印所有节点为偶数的个数lt.print_even_number();//拷贝构造函数LinkList lt1(lt);lt1.print();lt1.print_size();//编译器生成了默认的赋值运算符重载LinkList lt2 = lt1;lt2.print();//创建空链表LinkList lt3;lt3.print();lt1.push_back(11);lt1.push_back(14);lt1.push_back(12);lt1.push_back(13);lt1.print();//分离链表lt1,使lt1只含有偶数,lt3只含有奇数lt1.divide_LinkList(lt1.get_head(), lt3.get_head());lt1.print();lt3.print();
}int main()
{//不想输入数据就调用test_LinkList1()或test_LinkList3();//test_LinkList1();//test_LinkList2();test_LinkList3();return 0;
}

相关文章:

数据结构上机练习——单链表的基本操作、头文件、类定义、main函数、多种链表算法的实现,含注释

文章目录 单链表的基本操作实现1.头文件2.类定义和多种算法的实现2.1创建空表2.2头插法创建n个元素的线性链表2.3一个带头节点的链表存放一组整数&#xff0c;设计一个算法删除值等于x的所有节点。2.4计算线性表中值为偶数的节点个数2.5一个带头节点的单链表heada存放一组整数&…...

如何通过AI视频智能分析技术,构建着装规范检测/工装穿戴检测系统?

众所周知&#xff0c;规范着装在很多场景中起着重要的作用。违规着装极易增加安全隐患&#xff0c;并且引发安全事故和质量问题&#xff0c;例如&#xff0c;在化工工厂中&#xff0c;倘若员工没有穿戴符合要求的特殊防护服和安全鞋&#xff0c;将有极大可能受到有害物质的侵害…...

C语言自定义类型(上)

大家好&#xff0c;我们又见面了&#xff0c;这一次我们来学习一些C语言有关于自定义类型的结构。 目录 1.结构体 2位段 1.结构体 前面我们已经学习了一些有关于结构体的知识&#xff0c;现在我们进行深入的学习有关于它的知识。 结构是一些值的集合&#xff0c;这些值称为…...

Python - 小玩意 - 圣诞树背景音乐弹窗

import turtle as t import tkinter as tk import pygame import random as r import threading import time# 初始化背景音乐 def initialize_music():file r"./music/周杰伦-蜗牛.mp3"pygame.mixer.init()pygame.mixer.music.load(file)pygame.mixer.music.play()…...

The 2023 ICPC Asia Regionals Online Contest (1) E. Magical Pair(数论 欧拉函数)

题目 T(T<10)组样例&#xff0c;每次给出一个n(2<n<1e18)&#xff0c; 询问多少对&#xff0c;满足 答案对998244353取模&#xff0c;保证n-1不是998244353倍数 思路来源 OEIS、SSerxhs、官方题解 2023 ICPC 网络赛 第一场简要题解 - 知乎 题解 官方题解还没有…...

<十三>objectARX开发:模拟实现CAD的移动Move命令

一、目的 实现类似于CAD的移动命令,选择对象,移动到指定位置,移动过程中对象跟随鼠标移动。效果如下: 二、关键步骤 选择对象,打开实体判断类型:acedEntSel()、acdbOpenObject()、isKindOf()。指定基点:acedGetPoint()。移动模型,追踪光标移动对象实体:acedGrRead()…...

Autosar基础:模式管理-EcuM

ECUM目录 前言一、ECUM状态机二、Fixed和Flexible模式的区别与联系三、状态详解3.1.Startup3.2.UP3.3.RUN3.4.Sleep3.5.Shutdown三、EcuM唤醒源3.1 CAN Trcv唤醒3.2 唤醒后操作前言 根据Autosar对于模式管理的需求定义,模式管理有以下模块: ①ECU State Manager(EcuM):管理…...

代码随想录Day42 | 01背包问题| 416. 分割等和子集

01背包问题&#xff08;Acwing&#xff09; 有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入…...

UML六大关系总结

UML六大关系有&#xff1a;继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。 1、继承 继承&#xff08;Inheritance&#xff09;&#xff1a;表示类之间的继承关系&#xff0c;子类继承父类的属性和方法&#xff0c;并可以添加自己的扩展。 继承&#x…...

ElementUI基本介绍及登录注册案例演示

目录 前言 一.简介 二.优缺点 三.Element完成登录注册 1. 环境配置及前端演示 1.1 安装Element-UI模块 1.2 安装axios和qs(发送get请求和post请求) 1.3 导入依赖 2 页面布局 2.1组件与界面 3.方法实现功能数据交互 3.1 通过方法进行页面跳转 3.2 axios发送get请求 …...

Python爬虫-某网酒店评论数据

前言 本文是该专栏的第6篇,后面会持续分享python爬虫案例干货,记得关注。 本文以某网的酒店数据为例,采集对应酒店的评论数据。具体思路和方法跟着笔者直接往下看正文详细内容。(附带完整代码) 注意:本文的案例“数据集”,选用的是本专栏上一篇“Python爬虫-某网酒店数…...

C# Onnx Yolov8 Detect 水果识别

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…...

测试网页调用本地可执行程序(续1:解析参数中的中文编码)

学习测试网页调用本地可执行程序还遗留一个问题&#xff0c;即网页中调用带中文参数的命令时&#xff0c;本地可执行程序接收到的参数字符串里的中文都转换成了编码模式&#xff0c;看起来如下所示&#xff1a; <a href TestPageCall:-a你好>启动测试程序</a><…...

C++入门知识

Hello&#xff0c;今天我们分享一些关于C入门的知识&#xff0c;看完至少让你为后面的类和对象有一定的基础&#xff0c;所以在讲类和对象的时候&#xff0c;我们需要来了解一些关于C入门的知识。 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对…...

spring和springmvc常用注解

1.Spring常用注解&#xff1a; 1&#xff09;Repository将DAO类声明为Bean 2&#xff09;Service用于修饰service层的组件 3&#xff09;Controller通常作用在控制层&#xff0c;将在Spring MVC中使用 4&#xff09;Component是一个泛化的概念&#xff0c;仅仅表示spring中的一…...

【Java】Java生成PDF工具类

Java生成PDF工具类 一、介绍 Java生成PDF工具类是一个非常实用的工具类&#xff0c;可以帮助我们以程序化的方式生成PDF文件。通过该工具类&#xff0c;我们可以向PDF文件中添加文字、图片、表格等多种内容&#xff0c;并且可以进行格式化和样式设置。Java生成PDF工具类常用于…...

STL map,插入和查找的一些注意事项

01、前言&#xff08;废话&#xff09; C 的 std::map 容器中插入键值对主要有myMap(std::make_pair(key value)) &#xff0c;它们的区别你了解吗&#xff1f; auto it myMap,find(key) 和 auto value myMap[key] 都可以用于在 C 的 std::map 容器中查找键对应的值&#xff…...

基于springboot+vue的客户关系管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

【Java 基础篇】Java Stream 流详解

Java Stream&#xff08;流&#xff09;是Java 8引入的一个强大的新特性&#xff0c;用于处理集合数据。它提供了一种更简洁、更灵活的方式来操作数据&#xff0c;可以大大提高代码的可读性和可维护性。本文将详细介绍Java Stream流的概念、用法和一些常见操作。 什么是Stream…...

题解:ABC321A - 321-like Checker

题解&#xff1a;ABC321A - 321-like Checker 题目 链接&#xff1a;Atcoder。 链接&#xff1a;洛谷。 难度 算法难度&#xff1a;C。 思维难度&#xff1a;C。 调码难度&#xff1a;C。 综合评价&#xff1a;见洛谷链接。 算法 模拟。 思路 输入n后从后往前依次抽…...

Zig实现Hello World

1. 什么是zig 先列出一段官方的介绍: Zig is a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software. 大概意思就是说&#xff1a; Zig是一种通用编程语言和工具链&#xff0c;用于维护健壮、最佳和可重用的软件。 官…...

Vue3+element-plus切换标签页时数据保留问题

记录一次切换标签页缓存失效问题&#xff0c;注册路由时name不一致可能会导致缓存失效...

前端教程-TypeScript

官网 TypeScript官网 TypeScript中文官网 视频教程 尚硅谷TypeScript教程&#xff08;李立超老师TS新课&#xff09;...

代码随想录算法训练营 动态规划part06

一、完全背包 卡哥的总结&#xff0c;还挺全代码随想录 (programmercarl.com) 二、零钱兑换 II 518. 零钱兑换 II - 力扣&#xff08;LeetCode&#xff09; 被选物品之间不需要满足特定关系&#xff0c;只需要选择物品&#xff0c;以达到「全局最优」或者「特定状态」即可。 …...

能跑通的mmdet3d版本

能跑通的mmdet3d版本 1.0版本 2.0版本 注意&#xff1a;mmdet和mmdet3d简单地运行 pip install -v -e . 将会安装最低运行要求的版本。不要pip install -r requirements.txt安装依赖项&#xff0c;否则依赖库版本不对。 运行mmdet3d时&#xff0c;注释掉以上代码。...

SD-MTSP:萤火虫算法(FA)求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、萤火虫算法&#xff08;FA&#xff09;简介 萤火虫算法(Firefly Algorithm&#xff0c;FA)是Yang等人于2009年提出的一种仿生优化算法。 参考文献&#xff1a;田梦楚, 薄煜明, 陈志敏, et al. 萤火虫算法智能优化粒子滤波[J]. 自动化学报, 2016, 42(001):89-97. 二、单仓…...

bootstrapv4轮播图去除两侧阴影及线框的方法

文章目录 前言一、前提条件&#xff1a;二、bootstrap文档组件展示与实际应用1.官方文档展示如下&#xff1a;没有阴影2.实际应用情况如下&#xff1a; 三、解决方案 前言 这篇文章主要介绍了bootstrapv4轮播图去除两侧阴影及线框的方法,本文通过示例代码给大家介绍的非常详细…...

python 自建kafka消息生成和消费小工具

要将 Kafka 的消息生产和消费转换为 API 接口&#xff0c;我们可以使用 Python 的 Web 框架。其中 Flask 是一个轻量级且易于使用的选择。下面是一个简单的例子&#xff0c;使用 Flask 创建 API 来生成和消费 Kafka 消息。 1. 安装所需的库&#xff1a; pip install kafka-py…...

Prim算法:经过图中所有节点的最短路径

题目链接&#xff1a;53. 寻宝&#xff08;第七期模拟笔试&#xff09; #include<bits/stdc.h> using namespace std;// v为节点数量&#xff0c;e为边数量 int v, e;// 最小生成树 void prim(vector<vector<int>>& adj) {vector<int> dist(v1, I…...

Linux 信号捕捉函数 signal sigaction

signal函数 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 功能&#xff1a;设置某个信号的捕捉行为 参数&#xff1a; -signum&#xff1a;要捕捉的信号 handler&#xff1a;对捕捉到的信号怎么处理…...

网站建设公司怎么做业务/北京优化网站方法

cocoapods是个大坑&#xff0c;玩过的都懂。刚玩的时候被折磨得死去活来是常态&#xff0c;反复安装删除&#xff0c;各种报错也是常态。如果不怕麻烦&#xff0c;我还是推荐自己去gitHub上下载源码就好了&#xff0c;没必要用这玩意儿。在国内由于伟大的GFW&#xff0c;使得co…...

wordpress 换域名/西安seo站内优化

题目来源&#xff1a;赛码网http://exercise.acmcoder.com/online/online_judge_list /*************************************************************** 题目描述&#xff1a;股神 有股神吗&#xff1f;有&#xff0c;小赛就是&#xff01;经过严密的计算&#xff0c;小赛买…...

南开天津网站建设/网站seo平台

POE 在Quora上非常受欢迎的手机聊天机器人Poe App已经集成ChatGPT助手&#xff01;除了最初集成的三个聊天机器人Sage、Claude和Dragonfly外&#xff0c;Poe现在还加入了第四位ChatGPT。由于使用了ChatGPT API&#xff0c;因此Poe拥有真正的ChatGPT。 现在更是第一批集成了GP…...

如何在租用的服务器上部署自己的网站 mysql/霸榜seo

文章目录 知识点实例代码目录代码实现知识点 configure_fileconfigure_file 指令通过读取输入文件中的内容,将 CMakeLists.txt 文件中的变量转变为 C/C++ 中可识别的宏定义, 然后存入另一个文件中 我们使用了如下 CMAKE_PROJECT_VERSIONCMAKE_PROJECT_VERSION_MAJORCMAKE_PRO…...

深圳代做网站/qq群引流推广平台

Web基本笔记~04.css入门 上一期 CSS 的引入方式 内联样式&#xff08;行内样式&#xff09; <p style"background: orange; font-size: 30px;">MyFirstCSS<p>内部样式 <html><head><meta charset"utf-8" /><title&g…...

对于网站反爬虫如何做/电脑优化系统的软件哪个好

有时候我们在使用pycharm进行python编程的时候&#xff0c;遇到了no python interpreter for the project&#xff0c;怎么解决呢&#xff0c;下面来分享一下方法 工具/原料 pycharm no python interpreter for the project解决方法 方法/步骤 1 第一步我们在使用pycharm进行py…...