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

链表CPP简单示例

链表创建
链表打印全部内容
获取链表长度
链表根据指定位置添加元素
链表根据指定位置删除元素

#include <iostream>
using namespace std;// 1、创建结构体// typedef 经常在结构中使用 typedef 别名
typedef struct node {int date;struct node* next;  // 必须要自己用自己,否则会陷入循环中
}Node;  // 结构类型别名// 2、创建链表 创建长度为n的链表Node* Nodeinit(int n) {// 创建 头节点Node* head = new Node;head->date = 0;head->next = NULL;// 创建 暂存节点Node* per = head;for (int i = 0; i < n; i++) {Node* p = new Node;  // 创建 一个节点p->next = NULL;      // 指向下一个点, 先设空p->date = 0;         // 赋值 0per->next = p;       // 将 暂存节点 链接起来 这样暂存节点的下一个就是新的暂存节点,进行循环per = p;             // 将里面的值也赋过去}return head;}// 3、查看链表所有数据
void NodeDisplay(Node *tou) {Node* p = tou->next;while (p != NULL) {std::cout << p->date << " -> ";p = p->next;}std::cout << "NULL" << std::endl;
}// 4、获取链表长度
int Nodelen(Node *node) {Node* p = node->next;int i = 0;while (p != NULL) {p = p->next;i++;}std::cout << "链表长度:" << i << std::endl;return i;}// 指定位置插入(替换)链表数据 (头节点、插入位置、插入数据)
void NodeInsert(Node* head, int index, int date) {int n = Nodelen(head);  // 链表长度// 超出范围则报错if (index < 0 || index > n) {throw "index error"; //如果插入位置超出链表长度抛出异常//std::cout << "插入位置有误:"<< index << std::endl;}//临时存放节点Node* per = head;for (int i = 0; i < index; i++){// 循环next到index位置per = per->next;}Node* Node1 = new Node;// 新节点 输入数据Node1->date = date;// 新节点指向 要使用 原节点的指向Node1->next = per->next;// 原节点指向新节点 per->next = Node1;std::cout << "插入成功:" << index << std::endl;
}// 指定位置删除链表中的元素void delNode(Node* head, int index) {int n = Nodelen(head);  // 链表长度// 超出范围则报错if (index < 0 || index > n) {throw "index error"; //如果插入位置超出链表长度抛出异常//std::cout << "插入位置有误:"<< index << std::endl;}//临时存放节点Node* per = head;for (int i = 0; i < index; i++) {per->next;}// 将要删除的节点拿出来Node* p = per->next;// 接入下下个节点per->next = per->next->next;std::cout << "删除成功, 位置:" << index << std::endl;// 删除拿出来的节点delete p;
}
// 查链表是否存在某元素// 删除链表指定元素// 演示
int main(int argc, char** argv) {// 初始化 链表Node* MainHead = Nodeinit(5);// 打印链表NodeDisplay(MainHead);// 获取链表长度Nodelen(MainHead);// 插入替换某节点(链表首地址, 链表位置, 插入内容)NodeInsert(MainHead, 3, 1);// 打印链表NodeDisplay(MainHead);// 删除指定位置的链表元素delNode(MainHead, 4);// 打印链表NodeDisplay(MainHead);return 0;
}
http://www.lryc.cn/news/349367.html

相关文章:

  • 智能EDM邮件群发工具哪个好?
  • 低代码与AI技术发展:开启数字化新时代
  • 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)
  • uni-segmented-control插件使用
  • 被动防护不如主动出击
  • ollama离线部署llama3(window系统)
  • 基于Django实现的(bert)深度学习文本相似度检测系统设计
  • 数据中心网络随想-电路交换
  • 并行执行线程资源管理方式——《OceanBase 并行执行》系列 3
  • 数据库系统概论(个人笔记)(第二部分)
  • WebView基础知识以及Androidx-WebKit的使用
  • 解锁AI写作新纪元的文心一言指令
  • 前端学习——工具的使用
  • 图的拓扑序列(BFS_如果节点带着入度信息)
  • Linux常用指令集合
  • 前端 JS 经典:为什么需要模块化
  • MySQL:某字段追加随机数
  • 研发管理-选择研发管理系统-研发管理系统哪个好
  • 学校NTP时钟系统(时间同步系统)方案助力建设智慧校园
  • HTML中打开窗口的类型及使用方法
  • 【userfaultfd+条件竞争劫持modprobe_path】TSGCTF 2021 -- lkgit
  • StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读
  • SpringBoot解决CORS跨域——WebMvcConfigurationSupport
  • Linux之内存管理-malloc \kmalloc\vmalloc\dma
  • PyTorch中定义自己的数据集
  • 助力数字农林业发展服务香榧智慧种植,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建香榧种植场景下香榧果实检测识别系统
  • 2024 年 4 月区块链游戏研报:市场低迷中活跃用户数创新高
  • 排序(一)----冒泡排序,插入排序
  • springcloud简单了解及上手
  • Halcon与深度学习框架结合进行图像分析