要点:链表的一个结点中,除了要保存数据,还必须保存它下一个结点的地址。链表类型:(1)单链表:每个结点只包含一个引用(即地址),指向下一个结点(2)双向链表:每个结点包含两个引用,指向它的上一个结点和下一个结点(3)单循环链表:在单链表中,表尾结点的引用指向表头结点即为单循环链表准备数据1 clas...
分类:
其他好文 时间:
2015-11-18 02:02:42
阅读次数:
157
线性表使用顺序(数组)存储时有个弊端,那就是在插入和删除时需要大量的移动数据,这显示是非常消耗时间的,所以可以采用链式存储,即有一个指针域(单链表),来记录下个结点的存储位置(地址),这样在插入和删除结点时只需要修改指针域即可,从而大量减少移动数据所消耗的时间。来看链表的定义:struct nod....
分类:
其他好文 时间:
2015-11-11 11:13:50
阅读次数:
256
2.实现下述要求的Locate运算的函数问题描述设有一个带表头结点的双向链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次Locate(L,x)操作时,令元素值为x的...
分类:
其他好文 时间:
2015-11-08 19:24:51
阅读次数:
243
1.定义在单链表中,如果将终端结点的指针域有空指针指向头结点,则整个链表称为一个环,这种头尾相接的单链表称为循环单链表,简称循环链表。2.代码#include using namespace std;struct Node{ int data; Node *next;};class CLL{publ...
分类:
其他好文 时间:
2015-10-23 22:43:50
阅读次数:
198
一、首先,看看单链表中第i个元素的删除:StatusListDelete_L(LinkList&L,inti,ElemType&e){//在带头结点的单链表L中,删除第i个元素,并由e返回其值p=L;j=0;while(p->next&&jnext;++j;}if(!(p->next)||jnext...
分类:
其他好文 时间:
2015-10-21 13:54:01
阅读次数:
201
输入一个链表,反转链表后,输出链表的所有元素。 一开始我的做法非常复杂,因为我一次变了两个指针,导致要分别判断单数个结点和偶数个结点的情况。 反转链表要解决的两个问题就是 1.结点指向它的前驱 2.头结点变为其尾结点 当反转一个结点时,假设反转i,首先需要记录它的前驱,让它指向它的前驱...
分类:
其他好文 时间:
2015-10-19 17:11:12
阅读次数:
184
题目说明: 输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;}; 程序代码: #include #include using namespace std; struct Lis...
分类:
编程语言 时间:
2015-10-10 16:47:00
阅读次数:
179
Description:Given an array where elements are sorted in ascending order, convert it to a height balanced BST.给一个升序有序的数组,构建一个平衡的二叉查找树。要平衡就要找中间的数来做头结点,递...
分类:
其他好文 时间:
2015-10-01 17:56:49
阅读次数:
132
常见的前序、中序、后序都很常见,最近用到了按层遍历,记录一下:思路:用一个队列来作为辅助空间。依次存储头结点,左节点和右节点。每次循环输出节点的值,直到队列为空这样一来就利用了队列先进先出的性质实现了非递归按层遍历二叉树。具体实现:void levelOrderTraverse(const BiTr...
分类:
其他好文 时间:
2015-09-29 22:10:27
阅读次数:
234
链表逆序给定一个链表,一般的逆序的方法要设置三个指针,这种操作很繁琐,下面总结一种简单的方法:为链表设置一个头结点,然后head后面的节点依次的插入到head结点之前。最后完成链表的逆序。代码实现:ListNode* reverseList(ListNode* head) { ...
分类:
其他好文 时间:
2015-09-17 19:31:59
阅读次数:
176