第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)

这篇具有很好参考价值的文章主要介绍了第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

线性表的链式表示和实现

结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻
线性表的链式表示又称为非顺序映像或链式映像。
用一组物理位置任意的存储单元来存放线性表的数据元素。
这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。
链表中元素的逻辑次序和物理次序不一定相同。
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

单链表、双链表、循环链表

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

链表(链式存储结构)的特点

1、结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
2、访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点(顺序存取法),所以寻找第一个结点和最后一个结点所花费的时间不等。
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

单链表的定义和表示

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

单链表的基本操作的实现☆☆☆☆

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
用C++实现:

My_List* initList()
{
	My_List* temp = new My_List;
	temp->pnext = NULL;
	return temp;
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

bool ListEmpty(My_List* temp)
{
	if (temp->pnext == NULL)
	{
		return true;
	}
	else
	{
		return false;
	}
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

void My_DeleteAll(My_List* temp)
{
	My_List* p;
	while (temp)
	{
		p = temp;
		temp = temp->pnext;
		delete p;
	}
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

void My_ClearAll(My_List* temp)
{
	My_List* p;
	My_List* q;
	p = temp->pnext;
	while (p)
	{
		q = p->pnext;
		delete p;
		p = q;
	}
	temp->pnext = NULL;
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

int ListLength(My_List* temp)
{
	My_List* p;
	p = temp->pnext;
	int num = 0;
	while (p)
	{
		++num;
		p = p->pnext;
	}
	return num;
}

老师建议:基础且极其重要,必须熟练掌握。
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
较复杂函数的实现:
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

bool GetRnum(My_List* temp, int i, My_List* &mycache)
{
	My_List* p;
	p = temp->pnext;
	int j = 1;
	while (p&&j<i)
	{
		p = p->pnext;
		++j;
	}
	if (!p || j>i)
	{
		return false;
	}
	mycache = p;
	return true;
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

int LocateR(My_List* temp, int change)
{
	int j = 1;
	My_List* p = temp->pnext;
	while (p&&p->pdata.My_num!=change)
	{
		p = p->pnext;
		++j;
	}
	if (p!=NULL)
	{
		return j;
	}
	else
	{
		return 0;
	}
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

bool ListInsertfromI(My_List* temp, int i, My_List* mycache)
{
	int j = 0;
	My_List* p = temp;
	while (p&&j<i-1)
	{
		p = p->pnext;
		++j;
	}
	if (!p || j>i - 1)
	{
		return false;
	}
	mycache->pnext = p->pnext;
	p->pnext = mycache;
	return true;
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

bool ListDelete(My_List* temp, int i)
{
	My_List* p = temp;
	int j = 0;
	while (p->pnext&&j<i-1)
	{
		p = p->pnext;
		++j;
	}
	if (!(p->pnext) || j>i - 1)
	{
		return false;
	}
	My_List* q = p->pnext;
	p->pnext = q->pnext;
	delete q;
	return true;
}
时间复杂度分析

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

bool FrontInsert(My_List* temp)
{
	My_List* insertcache = new My_List;
	while (true)
	{
		cout << "请输入您所要添加资源的编号>=" << endl;
		cin >> insertcache->pdata.My_num;
		if (cin.fail()) {
			cout << "您输入的不是一个整数,请重新输入:" << endl;
			cin.clear();
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			continue;
		}
		cout << "请输入您所要添加资源的名字>=" << endl;
		cin >> insertcache->pdata.My_name;
		if (cin.fail()) {
			cout << "您输入的不是一个正确的名字,请重新输入:" << endl;
			cin.clear();
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			continue;
		}
		cout << "请输入您所要添加资源的剩余量>=" << endl;
		cin >> insertcache->pdata.My_Resources;
		if (cin.fail()) {
			cout << "您输入的不是一个整数,请重新输入:" << endl;
			cin.clear();
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			continue;
		}
		break;
	}
	insertcache->pnext = temp->pnext;
	temp->pnext = insertcache;
	cout << "需要继续添加吗?1、需要;其他、不需要" << endl;
	int tempnum;
	cin >> tempnum;
	if (cin.fail()) {
		tempnum = 0;
		cin.clear();
		cin.ignore(numeric_limits<streamsize>::max(), '\n');
	}
	if (tempnum == 1)
	{
		return true;
	}
	else
	{
		return false;
	}
}

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构

bool AfterInsert(My_List* temp)
{
	My_List* insertcache = new My_List;
	while (temp->pnext)
	{
		temp = temp->pnext;
	}
	while (true)
	{
		cout << "请输入您所要添加资源的编号>=" << endl;
		cin >> insertcache->pdata.My_num;
		if (cin.fail()) {
			cout << "您输入的不是一个整数,请重新输入:" << endl;
			cin.clear();
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			continue;
		}
		cout << "请输入您所要添加资源的名字>=" << endl;
		cin >> insertcache->pdata.My_name;
		if (cin.fail()) {
			cout << "您输入的不是一个正确的名字,请重新输入:" << endl;
			cin.clear();
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			continue;
		}
		cout << "请输入您所要添加资源的剩余量>=" << endl;
		cin >> insertcache->pdata.My_Resources;
		if (cin.fail()) {
			cout << "您输入的不是一个整数,请重新输入:" << endl;
			cin.clear();
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			continue;
		}
		break;
	}
	insertcache->pnext = NULL;
	temp->pnext = insertcache;
	cout << "需要继续添加吗?1、需要;其他、不需要" << endl;
	int tempnum;
	cin >> tempnum;
	if (cin.fail()) {
		tempnum = 0;
		cin.clear();
		cin.ignore(numeric_limits<streamsize>::max(), '\n');
	}
	if (tempnum == 1)
	{
		return true;
	}
	else
	{
		return false;
	}
}

最后代码运行如下:

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构
第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频),数据结构与算法,学习,数据结构文章来源地址https://www.toymoban.com/news/detail-575817.html

到了这里,关于第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第一百天学习记录:线性代数:行列式(宋浩板书)

    注:二阶行列式和三阶行列式以及排列和逆序数见高等数学自学向量篇中间穿插的线性代数知识点补充。 性质7(☆☆☆) 拉普拉斯 行列式相乘 行列式的计算 题外话:不知不觉已经学习了100天。坚持果然是一件特别好的东西。它能逐渐让人养成学习的习惯。希望往后能够一

    2024年02月13日
    浏览(43)
  • 第一百一十五天学习记录:C++提高:STL初识(黑马教学视频)

    1、长久以来,软件界一直希望建立一种可重复利用的东西 2、C++的面向对象和泛型编程思想,目的就是重复性的提升 3、大多数情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 4、为了建立数据结构和算法的一套标准,诞生了STL 1、STL,标准模板库 2、

    2024年02月16日
    浏览(46)
  • 第一百一十三天学习记录:C++提高:类模板(黑马教学视频)

    类模板作用: 建立一个通用类,类中的成员 数据类型可以不具体定制,用一个虚拟的类型来代表。 语法: 解释: template … 声明创建模板 typename … 表面其后面的符号是一种数据类型,可以用class代替 T … 通用的数据类型,名称可以替换,通常为大写字母 总结:类模板和函

    2024年02月16日
    浏览(38)
  • 第一百一十四天学习记录:C++提高:类模板案例(黑马教学视频)

    main.cpp代码: myarray.hpp代码: 输出: 总结:能够利用所学知识点实现通用的数组。 个人感悟:学习了这个案例之后接下来的课程就是STL了,STL其实在我工作中写代码时经常碰到,尤其是在读同事代码的时候,因为没有学过,通过自行百度获得碎片的知识导致读起来很很吃力

    2024年02月16日
    浏览(45)
  • JAVA面试题分享四百零六:ElasticSearch 的使用建议

    目录 一 前言 二 查询相关 充分利用缓存 聚合查询 分页 其他 三 写入相关 四 索引创建 分片 Mapping设计 Keyword和Numeric的选择 五 总结 本文分享了在工作中关于 ElasticSearch 的一些使用建议。 和其他更偏向手册化更注重结论的文章不同,本文将一定程度上阐述部分建议背后的原理

    2024年02月21日
    浏览(35)
  • 第一百二十八天学习记录:数据结构与算法基础:栈和队列(上)(王卓教学视频)

    1、栈和队列是两种常用的、重要的数据结构 2、栈和队列是限定插入和删除只能在表的“端点”进行的线性表 线性表可以在任意一个位置插入和删除,栈只能在最后位置插入和删除 只能删除第一个元素 栈和队列是线性表的子集(是插入和删除位置受限的线性表)

    2024年02月13日
    浏览(43)
  • 大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)

    文章目录 SQL 聚合函数(Aggregate Function) Python UDAF,即 Python AggregateFunction。Python UDAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等。针对同一组输入数据,Python AggregateFunction 产生一条输出数据。比如以下示例,定义了一个

    2024年02月08日
    浏览(42)
  • 一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效)

    Kafka到HDFS,除了用Kafka API和flume之外,还可以用kettle,最大优点是不用写代码! 版本:Kettle版本:8.2、Hadoop版本:3.1.3 前提:    详情请看鄙人的一百零一、Kettle8.2.0连接Hive3.1.2(踩坑,亲测有效) http://t.csdn.cn/mWfOC http://t.csdn.cn/mWfOC 前提一、Hadoop系列配置文件已复制到kettle路径

    2024年02月15日
    浏览(37)
  • C/C++基础讲解(一百零一)之经典篇(打印笑脸/兔子繁殖/素数)

    很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一样都是这么啃过来的,从不知到知知,懵懂到入门,每一步都走的很艰辛,课程上,大学老师基本上讲解上机实操得时间特别有

    2024年02月08日
    浏览(46)
  • 大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)

    文章目录 SQL 表值聚合函数(Table Aggregate Function) Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与 Python UDAF 不同的是,针对同一组输入数据,Python UDTAF 可以产生 0 条、1 条

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包