c++/数据结构
adminabcd
爱生活,爱自己
展开
-
给出一个单链表,不知道N的值,怎样遍历一次就可以求出中间结点
给出一个单链表,不知道N的值,怎样遍历一次就可以求出中间结点试着运行了下书上的程序,发现运行出错,认真的看了下,发现有个错误。while(head->next->next!=NULL)这里不能保证head->next不为空,如果head->next==NULL时,那么上面这句就会出错了。 我试着将它的程序进行了改动,即在上面加上head->next!=NULL。全部代码如下:#include<io原创 2015-05-20 17:04:43 · 1756 阅读 · 0 评论 -
二叉查找树(插入、查找、遍历、删除.........)
【二叉查找树的性质】 二叉查找树是满足以下条件的二叉树:左子树上的所有节点值均小于根节点值右子树上的所有节点值均不小于根节点值左右子树也都是二叉查找树不存在两个节点的值相等原创 2015-07-07 18:39:43 · 913 阅读 · 0 评论 -
二叉树的建立与遍历(二)(c++实现)
【目标】建立如下所示的一棵二叉树,并且输出其对应的前序遍历、中序遍历、后序遍历。原创 2015-07-06 20:50:20 · 2375 阅读 · 0 评论 -
二叉树的建立与遍历(一)(c++实现)
【目标】建立如下所示的一棵二叉树,并且输出其对应的前序遍历、中序遍历、后序遍历。原创 2015-07-06 16:14:58 · 1487 阅读 · 0 评论 -
红黑树
【红黑树的性质】红黑树是一种特殊的二叉查找树,红黑树的所有空指针用外部节点nullNode(nullNode->rchild=nullNode->rchild=nullNode)代替。红黑树具有以下性质:根节点是黑色的所有节点不是黑色就是红色外部节点都是黑色的红色节点的孩子节点一定是黑色的所有从根节点到外部节点的所有路径上,包含相同数目的黑色节点。原创 2015-07-11 20:41:40 · 511 阅读 · 0 评论 -
链式栈(c++实现)
栈的特点是后进先出。原创 2015-06-30 21:41:04 · 2855 阅读 · 0 评论 -
链式队列的实现(c++)
队列的特点是先进先出。原创 2015-07-02 21:51:58 · 1677 阅读 · 0 评论 -
(程序员面试宝典)已知n个人围坐在一张圆桌旁,从编号为k的人开始..................
【题目】设有n个人(以编号为1,2,3…….n分别表示)围坐在圆桌周围,从编号为k的人开始报数,数到m的人就站出来,他的下一个人又从1开始报数,数到m的人就站出来,依此规律重复下去,知道全部的人都站出来为止。【代码实现】#include<iostream>using namespace std;struct node{ int data; node *next;};class li原创 2015-06-27 21:51:55 · 8017 阅读 · 1 评论 -
双向循环链表(c++实现)
在该双向循环链表中,表头结点first不存元素;当双向循环链表为空时:first->rlink=first->llink=first;以下代码实现了双向循环链表的插入、删除操作;在插入操作中,实现了头插法以及按序插入法。//main.cpp//----------建立一个双向循环链表-------#include<iostream>using namespace std;class dblis原创 2015-06-29 15:33:17 · 1136 阅读 · 0 评论 -
顺序栈的c++实现
栈的定义以及对栈的操作在mystack.h中实现#ifndef MYSTACK_H#define MYSTACK_Htemplate<class T>class Mystack{public: Mystack(int stackcapacity); ~Mystack(); bool Isempty(); void Top(); void Push(T原创 2015-06-16 15:57:14 · 1270 阅读 · 0 评论 -
单链表的简单c++实现
以下代码只实现了单链表的手动创建以及输出功能#include<iostream>using namespace std;struct node{ int data; node *next;};class list{public: void creat(); void show();private: node *head;};void list::cre原创 2015-06-24 19:51:28 · 736 阅读 · 0 评论 -
二叉树的遍历
1.已知二叉树的前序遍历跟中序遍历,求二叉树的后序遍历【例如】已知二叉树的前序遍历序列为cedba,中序遍历为debac,求该二叉树的后序遍历 【分析】由前序遍历可知,根节点为c,再根据中序遍历确定左子树为deba,右子树为空;根据前序遍历可知左子树deba的根节点为e,再根据中序遍历知deba中的左子树为d,右子树为ba;根据前序遍历可知右子树为ba的根节点为b,再根据中序遍历知ba的右子树为a原创 2015-06-28 12:31:38 · 1191 阅读 · 0 评论 -
n个节点的二叉树有多少种形态
【n个节点的二叉树有多少种形态(Catalan数)】分析过程: (1)先考虑只有一个节点的情形,设此时的形态有f(1)种,那么很明显f(1)=1(2)如果有两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系。那么,如果固定一个节点后,左右子树的分布情况为1=1+0=0+1,故有f(2) = f(1) + f(1)(3)如果有三个节点,(我们需要考虑固定两个节点的情况么?当然不,因为当节转载 2015-06-28 17:32:49 · 52709 阅读 · 5 评论 -
单链表
学习数据结构已经很久了,现在复习一下,欢迎各位批评指正本文主要是实现单链表的建立/测长/排序/插入/删除功能,首先定义结构体如下:typedef struct student{ int data; struct student *next;}node;单链表的建立node *create(){ node *head,*p,*s; int x,cycle=1; head=(n原创 2015-05-20 11:38:08 · 530 阅读 · 0 评论 -
顺序队列的c++实现
顺序队列的初始化及对队列的操作保存在queue.h中#ifndef QUEUE_H#define QUEUE_Htemplate <class T>class Queue{public: Queue(int queuecapacity); bool Isempty(); void Front(); void Rear(); void Pu原创 2015-06-17 22:11:10 · 1594 阅读 · 0 评论 -
单链表的插入删除操作(c++实现)
下列代码实现的是单链表的按序插入、链表元素的删除、链表的输出原创 2015-06-26 10:25:04 · 4359 阅读 · 0 评论 -
使用STL中的list容器实现单链表的操作
#include<iostream>#include<list>#include<algorithm>using namespace std;void Print(int &item){ cout<<item<<" ";}int main(){ list<int> listintegers; list<int>::iterator listiter; //引入迭代器原创 2015-06-27 16:59:35 · 1645 阅读 · 0 评论 -
大顶堆(c++实现)
【大顶堆的性质】大顶堆是一棵完全二叉树,且树中的每个节点的值都不小于它的孩子节点的值。我们可以用一个heap数组来表示它。【大顶堆的插入、删除】大顶堆的插入:首先初始化插入位置为最后,然后从下往上调整堆(调整插入元素的位置)。在调整过程中,若当前节点的父亲节点小于插入元素,则将其父亲节点的值赋给当前节点,父亲节点作为当前节点,依此继续;否则当前节点即为插入位置。大顶堆的删除:删除根,初始化最后一原创 2015-07-14 17:00:46 · 6045 阅读 · 0 评论