数据结构[单链表]操作大全(初始化,创建,插入,查询,删除,长度,输出)c++代码实现
今晚上干了许久的链表
看见指针就头大的我真的是头皮发麻了一晚上
代码中写有注释,虽然不是太详细,但是了指针熟练的同学应该可以看懂
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++代码实现相关推荐
- 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
数据结构上机测试2-1:单链表操作A Time Limit: 1000ms Memory limit: 4096K 有疑问?点这里^_^ 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头 ...
- 天勤考研数据结构———单链表操作
定义单链表 typedef struct LNode{int data;struct LNode *next; }LNode; A\B皆为有序链表,合并排序到C中 头插法 void merge(LN ...
- 数据结构--单链表(数组)
文章目录 单链表 单链表 用数组实现的单链表可以在任意位置插入.删除.替换一个数,相比于用结构体和指针实现的动态链表而言,数组模拟链表运行的速度非常快,动态链表基本会出现超时的现象.但缺点是浪费内存 ...
- 数据结构——单链表(小白入门第二天)
一.什么是单链表? 定义:每个结点 除了存放数据元素外,还要存储指向下一个节点的指针: 优点:不要求大片连续空间,改变容量方便: 缺点:不可随机存取,要耗费一定空间存放指针 局限性:无法逆向检索 二. ...
- C语言之单链表打印(遍历),查询,定位,插入,删除,链表长度
生活记录 先聊家常,不想看废话的请直接跳到下面看代码分析. 大半个月没有更新博客了,大半个月也做了很多事情.依旧被困在英国,并且得知下个月的机票又又又被取消了:第二遍参加了某大公司的机试以及再次的失败 ...
- 单链表的整表创建(头结点版)
*****参照<大话数据结构>整理***** 一.基本要素概念明析 1.指针 指针也就是内存地址 ,指针变量是用来存放内存地址的变量(按照百度定义,进行下面的介绍) 2.结构体 结构体是C ...
- 不带头结点的单链表操作
不带头结点的单链表操作,包括插入.遍历.统计结点数等,要求写出数据结构算法思想及C语言实现函数 本文为博主原创文章,未经博主允许不得转载. 版权为陈博超所有,第一次于2021年06月22日发表于BLO ...
- C语言数据结构单链表链表
数据结构–单链表 学习了顺序表,我们发现顺序表在向里面存放数据的时候很麻烦,比如我们要使用头插法存放一个数据到顺序表的时候,我们要将整个表都向后挪一位,这个操作就让人很难受.那么有没有一种结构可以让我 ...
- 单链表操作——交换节点
链表是最为常见,并且经常需要使用到的数据结构之一.对于单链表的基本操作,例如创建链表.插入.删除等都不是特别复杂,但是其实对于链表的操作实际上很多的操作还是有一定的难度,例如上次给出的单链表的逆转,以 ...
最新文章
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(构建自定义函数配置显示均值、标准偏差)实战
- 5G 时代的 Android App 开发入门与项目实战
- 【bzoj1965】 [Ahoi2005]SHUFFLE 洗牌 欧拉定理
- android-数据库SQLite相关
- 创造信用收入 借贷宝颠覆创新普惠金融
- JUC学习笔记及拓展
- anaconda 安装pytorch_conda上安装PyTorch
- python 爬虫代码_Python 你见过三行代码的爬虫吗
- 7-2 日期问题面向对象设计(聚合一) (35 分)
- 3.深度学习的实用层面
- postgresql 的 libdir 在哪里?
- 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
- 网络安全和CTF相关内容
- 沈阳建筑大学811c语言真题,沈阳建筑大学C语言试题.doc
- 出现电脑蓝屏代码0x000000ed怎么解决
- 从智能交通案例看物联网成功的关键
- 如何看待国内开源现状?贾扬清、李沐、陈天奇等大牛如是说
- AI识别照片是谁,人脸识别face_recognition开源项目安装使用 | 机器学习
- 基于vue的选择月日组件
- linux手机内存碎片整理软件,Linux不需要磁盘碎片整理