IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【Leecode笔记05-数据结构入门14天】初学自用笔记-链表和指针 -> 正文阅读

[数据结构与算法]【Leecode笔记05-数据结构入门14天】初学自用笔记-链表和指针

在这里插入图片描述

关于指针,菜鸟家的表述比较清晰了【https://www.runoob.com/cplusplus/cpp-pointers.html】


链表:
转载自【http://c.biancheng.net/view/1570.html】 还没太懂:

因为指向链表头的指针用于定位链表的头部,所以也可以认为它代表了链表头。同样的指针也可以用来定位整个链表,从头开始,后面跟着后续指针,所以也可以很自然地把它看作是代表了整个链表。
在这里插入图片描述
这个看起来很实用!
给到的一个实例程序,需要常看常新:

// This program illustrates the building
// and traversal of a linked list.
#include <iostream>
#include <fstream>
using namespace std;
struct ListNode
{
    double value;
    ListNode *next;
    // Constructor
    ListNode(double value1, ListNode *next1 = nullptr)
    {
        value = value1; next = next1;
    }
};

int main()
{
    double number; // Used to read the file
    ListNode *numberList = nullptr; // List of numbers
    // Open the file
    ifstream numberFile("numberFile?dat");
    if (!numberFile)
    {
        cout << "Error in opening the file of numbers.";
        exit (1);
    }
    //Read the file into a linked list
    cout << "The contents of the file are: " << endl;
    while (numberFile >> number)
    //>>表示读入数据到number,如果读取值非空,则进行操作
    {
        cout << number << " ";
        // Create a node to hold this number
        numberList = new ListNode(number, numberList);
    }
    // Traverse the list while printing
    cout << endl << "The contents of the list are: " << endl;
    ListNode *ptr = numberList;
    while (ptr != nullptr)
    {
        cout << ptr->value << " "; // Process node
        ptr = ptr->next; // Move to next node
    }
    return 0;
}

在这里插入图片描述
类似的原理&题目思路解释见【https://blog.csdn.net/weixin_39538889/article/details/85801412】,眼睛痛还没看

更新:关于 find() / end()

【这个讲的赞!】《undered_map的用法总结》【https://www.cnblogs.com/xuelisheng/p/10771961.html】
unordered_map的迭代器是一个指针,指向这个元素,通过迭代器来取得它的值。
它的键、值分别是迭代器的first和second属性。

1 it->first;               // same as (*it).first   (the key value)
2 it->second;              // same as (*it).second  (the mapped value) 

.find() / end():返回的都是元素的迭代器(键+值)。
find()如果没找到:返回unordered_map::end。
括号内的参数是键key,但一般是“重要的信息”设成key,序号设为第二个值value。
例如【https://www.cnblogs.com/xuelisheng/p/10771961.html】中的示例代码:

#include<iostream> //map的基本操作如下
#include<map>
#include<string>

using namespace std;

int main()
{
	// 构造函数
	map<string, int> dict;

	// 插入数据的三种方式
	dict.insert(pair<string, int>("apple", 2));
	dict.insert(map<string, int>::value_type("orange", 3));
	dict["banana"] = 6;

	// 判断是否有元素
	if (dict.empty())
		cout << "该字典无元素" << endl;
	else
		cout << "该字典共有" << dict.size() << "个元素" << endl;

	// 遍历
	map<string, int>::iterator iter;
	for (iter = dict.begin(); iter != dict.end(); iter++)
		cout << iter->first << ends << iter->second << endl;

	// 查找
	if ((iter = dict.find("banana")) != dict.end()) //  返回一个迭代器指向键值为key的元素,如果没找到就返回end()
		cout << "已找到banana,其value为" << iter->second << "." << endl;
	else
		cout << "未找到banana." << endl;

	if (dict.count("watermelon") == 0) // 返回键值等于key的元素的个数
		cout << "watermelon不存在" << endl;
	else
		cout << "watermelon存在" << endl;

	pair<map<string, int>::iterator, map<string, int>::iterator> ret;
	ret = dict.equal_range("banana"); // 查找键值等于 key 的元素区间为[start,end),指示范围的两个迭代器以 pair 返回
	cout << ret.first->first << ends << ret.first->second << endl;
	cout << ret.second->first << ends << ret.second->second << endl;

	iter = dict.lower_bound("boluo"); // 返回一个迭代器,指向键值>=key的第一个元素。
	cout << iter->first << endl;
	iter = dict.upper_bound("boluo"); // 返回一个迭代器,指向值键值>key的第一个元素。
	cout << iter->first << endl;
	return 0;
}

其结果为:

该字典共有3个元素
apple2
banana6
orange3
已找到banana,其value为6.
watermelon不存在
banana6
orange3
orange
orange

auto

在C++11标准的语法中,auto被定义为自动推断变量的类型。
不过C++11的auto必须给申明的变量赋予一个初始值,否则会报错。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:17:15  更:2021-12-03 13:19:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/30 6:35:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码