今晚上干了许久的链表
看见指针就头大的我真的是头皮发麻了一晚上
代码中写有注释,虽然不是太详细,但是了指针熟练的同学应该可以看懂
main函数中请自由发挥

#pragma GCC optimize(3,"Ofast","inline")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <math.h>
#include <string>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <stdlib.h>
#define maxn  1000005
//#define true false
//#define false true
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
const double pi = acos(-1);
typedef long long ll;
ll mod;
using namespace std;struct Node {   //单链表储存结构int date;Node* next;
};Node* list_creathead() {  //单链表的初始化Node* node = new Node;  //生成新结点作为其头节点node->date = 0;node->next = NULL;        //将头节点的next域置为空return node;
}void list_input(Node* node, int n) {  //创建单链表   p是在链表中移动的,r是指向尾节点的Node* r = node;    //创建尾指针,指向头节点for (int i = 0; i < n; i++) {Node* p = new Node;   //生成新结点cin >> p->date;p->next = NULL;r->next = p;r = p;}
}Node* list_find(Node* node, int x) {   //查找某个值在链表中的位置Node* p = node->next;while (p && p->date != x) p = p->next;  //两种退出状况,一种是到了链表结尾,另一种是找到值,我们返回p就可以return p;
}bool list_insert(Node* node, int i, int x) {   //在某位置插入值Node* p = node;int j = 0;while (p && j < i - 1) {p = p->next;j++;}if (!p || j > i - 1)  return false;   //如果输入位置不存在,返回falseNode* s = new Node;s->date = x;    //将新结点的date赋值s->next = p->next;   //尾插法逻辑p->next = s;return true;   //插入成功
}int list_len(Node* node) {  //遍历列表求其长度int icount = 0;while (node->next) {node = node->next;icount++;}return icount;
}void list_print(Node* node) {   //遍历链表输出储存值node = node->next;while (node != NULL) {  //当链表没有走到末尾cout << node->date << " ";node = node->next;}cout << endl;
}bool list_delete(Node* node, int i) {  //删除某元素Node* p = node;int j = 0;while (p->next && j < i - 1) {p = p->next;j++;}if (!p->next || j > i - 1)  return false;Node* q = p->next;p->next = q->next;delete q;return true;
}int list_searchnode(Node* node, int i) {  //查询第i个结点的值int j = 0;while (j < i && node) {  //停止条件是到达此节点或者到达链表末尾,在后面再检查是哪个原因停止下来的。node = node->next;j++;}cout << j << endl;if (!node || j > i)  return -1;  else return node->date;
}int main()
{return 0;
}

数据结构[单链表]操作大全(初始化,创建,插入,查询,删除,长度,输出)c++代码实现相关推荐

  1. 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)

    数据结构上机测试2-1:单链表操作A Time Limit: 1000ms   Memory limit: 4096K  有疑问?点这里^_^ 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头 ...

  2. 天勤考研数据结构———单链表操作

    定义单链表 typedef struct LNode{int data;struct LNode *next; }LNode; A\B皆为有序链表,合并排序到C中  头插法 void merge(LN ...

  3. 数据结构--单链表(数组)

    文章目录 单链表 单链表 用数组实现的单链表可以在任意位置插入.删除.替换一个数,相比于用结构体和指针实现的动态链表而言,数组模拟链表运行的速度非常快,动态链表基本会出现超时的现象.但缺点是浪费内存 ...

  4. 数据结构——单链表(小白入门第二天)

    一.什么是单链表? 定义:每个结点 除了存放数据元素外,还要存储指向下一个节点的指针: 优点:不要求大片连续空间,改变容量方便: 缺点:不可随机存取,要耗费一定空间存放指针 局限性:无法逆向检索 二. ...

  5. C语言之单链表打印(遍历),查询,定位,插入,删除,链表长度

    生活记录 先聊家常,不想看废话的请直接跳到下面看代码分析. 大半个月没有更新博客了,大半个月也做了很多事情.依旧被困在英国,并且得知下个月的机票又又又被取消了:第二遍参加了某大公司的机试以及再次的失败 ...

  6. 单链表的整表创建(头结点版)

    *****参照<大话数据结构>整理***** 一.基本要素概念明析 1.指针 指针也就是内存地址 ,指针变量是用来存放内存地址的变量(按照百度定义,进行下面的介绍) 2.结构体 结构体是C ...

  7. 不带头结点的单链表操作

    不带头结点的单链表操作,包括插入.遍历.统计结点数等,要求写出数据结构算法思想及C语言实现函数 本文为博主原创文章,未经博主允许不得转载. 版权为陈博超所有,第一次于2021年06月22日发表于BLO ...

  8. C语言数据结构单链表链表

    数据结构–单链表 学习了顺序表,我们发现顺序表在向里面存放数据的时候很麻烦,比如我们要使用头插法存放一个数据到顺序表的时候,我们要将整个表都向后挪一位,这个操作就让人很难受.那么有没有一种结构可以让我 ...

  9. 单链表操作——交换节点

    链表是最为常见,并且经常需要使用到的数据结构之一.对于单链表的基本操作,例如创建链表.插入.删除等都不是特别复杂,但是其实对于链表的操作实际上很多的操作还是有一定的难度,例如上次给出的单链表的逆转,以 ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(构建自定义函数配置显示均值、标准偏差)实战
  2. 5G 时代的 Android App 开发入门与项目实战
  3. 【bzoj1965】 [Ahoi2005]SHUFFLE 洗牌 欧拉定理
  4. android-数据库SQLite相关
  5. 创造信用收入 借贷宝颠覆创新普惠金融
  6. JUC学习笔记及拓展
  7. anaconda 安装pytorch_conda上安装PyTorch
  8. python 爬虫代码_Python 你见过三行代码的爬虫吗
  9. 7-2 日期问题面向对象设计(聚合一) (35 分)
  10. 3.深度学习的实用层面
  11. postgresql 的 libdir 在哪里?
  12. 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
  13. 网络安全和CTF相关内容
  14. 沈阳建筑大学811c语言真题,沈阳建筑大学C语言试题.doc
  15. 出现电脑蓝屏代码0x000000ed怎么解决
  16. 从智能交通案例看物联网成功的关键
  17. 如何看待国内开源现状?贾扬清、李沐、陈天奇等大牛如是说
  18. AI识别照片是谁,人脸识别face_recognition开源项目安装使用 | 机器学习
  19. 基于vue的选择月日组件
  20. linux手机内存碎片整理软件,Linux不需要磁盘碎片整理

热门文章

  1. MySQL数据库中创建表并给某个字段添加数据
  2. 固件模块之间的关系 C语言里面的模块
  3. 爬虫笔记|r.text-r.request.headers|修改,头
  4. Linux期末复习题库(1)
  5. 深度学习以及卷积基础
  6. 技巧 | OpenCV程序执行时间计算
  7. 【项目实践】中英文文字检测与识别项目(CTPN+CRNN+CTC Loss原理讲解)
  8. 一文看懂自动驾驶关键技术
  9. CentOS SVN服务器管理多项目
  10. 如何跨过Docker集群网络Weave遇到的“坑”?