数据结构,链表
Jammm
除了聪明 没有什么好说的 除了学习 没有什么好干的
展开
-
链表的基本操作
单链表:1、逻辑上连续,位置上可以不连续的存储方式。2、单链表由无数个结点组成,每个结点由数据段和指针域组成,数据段存储数据,指针域存储后继的地址。3、每个结点最多有一个前继和一个后继。4、其中第一个结点没有前继,所以我们通常建立一个头结点来保存他的位置,其中头结点的数据不关注。5、最后一个结点没有后继,所以我们将最后一个结点的指针域赋为NULL。单链表基本操作的函数实现:原创 2017-09-29 14:36:17 · 459 阅读 · 0 评论 -
单链表---删除无头单链表的非尾结点(不遍历链表)
删除无头单链表的非尾结点代码实现// 删除无头单链表的非尾结点 void DeleteNotTailNode(PNode pos){ PNode pDel = NULL; if (NULL == pos || NULL == pos->_pNext) return; pDel = pos->_pNext; pos->_data = pDel->_data; pos-原创 2017-09-29 14:47:08 · 386 阅读 · 0 评论 -
单链表---实现约瑟夫环的问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。解决思路:1.将单链表尾结点指向头结点,形成一个环。2.通过循环报数的形式,删除数到m的结点。3.当删除到只有一个结点的时候,将环解原创 2017-10-19 17:13:14 · 542 阅读 · 0 评论 -
单链表---两种方法简单实现单链表逆置
方法一: 反转前后指针,通过建立三个指针的移动,将两两相邻的结点依次进行反转。//单链表的逆置---相邻指针PNode ReverseList(PNode pHead){ PNode pPre = pHead; PNode pCur = NULL; PNode pNext = NULL; if (NULL == pHead || NULL == pHead->_pNext)原创 2017-10-19 19:29:35 · 2409 阅读 · 0 评论 -
数据结构---单链表(C++实现)
单链表线性表由于在内存上顺序存储,在插入和删除元素时效率很低。单链表通过链式存储,适用于插入和删除频繁,储存空间不定的情形。单链表的一个存储结点(node)包括两个部分:数据域(data)和指针域(link) 数据域:存储线性表的一个数据元素 指针域:存储下一个节点的首地址 只能通过头指针(pHead)进行操作:链表的第一个结点的地址可以通过链表的头指针找到,但是其他结点的...原创 2018-06-20 16:01:09 · 5165 阅读 · 1 评论 -
哈希表(散列表)捋一捋
散列表(Hash table)通过将关键码映射到表中的某个位置来存储元素,然后根据关键码用同样的方式进行直接访问散列表理想的搜索方法是可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,使元素的存储位置与它的关键码之间建立一个确定的对应函数关系Hash(),那么每个元素关键码与结构中的一个唯一的存储位置相对应:Address = Hash(Key)...原创 2018-08-08 23:47:41 · 1092 阅读 · 0 评论