数据结构
肆零
这个作者很懒,什么都没留下…
展开
-
二叉树基本概念一览
二叉树基本概念一览二叉树是数据结构中非常重要的内容,在计算机科学中,每个结点最多有两个子树的结构被称作二叉树,其相关概念繁多,学习起来让很多人头疼,本篇博文就其中一些比较重要的基础进行一下简单的梳理和介绍。首先介绍一个二叉树中最基本的内容——结点,直观来看它就是二叉树中用圈圈框起来的一个个的点,其包含数据元素和若干指向子树的分支,下面就此展开。 子树二叉树每个结点的的分支称作该结点的子树,其左侧原创 2017-03-10 11:13:00 · 8813 阅读 · 0 评论 -
下定决心拿下散列表(Hash)
散列表,又称Hash(哈希),是数据结构中的重要内容,也是面试中的常见考点,然而相比于二叉树、链表等其他常见结构,人们对其掌握度往往不足,反思自己过去也怀有侥幸心理,常常对其避而远之,现在醒悟这种掩耳盗铃的做法实在不可取,于是痛定思痛,决心从头开始,弄懂散列表!散列是一种基于键值对(存储位置,也称哈希地址,key;关键字值value,其间关系由散列函数或称哈希函数给出)来实现访问的过程。散列查原创 2017-04-13 11:20:02 · 234 阅读 · 0 评论 -
顺序队列与循环队列
一、队列的概念 只能在表的一端进行插入操作,只能在表的另一端进行删除操作,这种数据结构称为队列。把允许插入的一端叫队尾(rear),允许删除的一端叫对头(front)。二、队列的分类 队列本身也是一种线性表,因而和线性表一样也有顺序和链式存储结构两种存储方式。 采用顺序存储结构实现的队列称为顺序队列;转载 2017-04-02 22:34:13 · 2023 阅读 · 0 评论 -
数据结构系列之链表——双链表插入
(p0开空间,赋值、循环判断移动指针、numdata,分头分中,否则为尾部插入)dnode* insert(dnode *head,int num){ dnode *p1,*p0; p1=head; p0=(dnode*)malloc(sizeof(dnode)); p0->data=num; while(num>p1->data&& p1->原创 2017-03-15 18:18:54 · 390 阅读 · 1 评论 -
数据结构系列之链表——循环链表(约瑟夫环)
已知n个人,编号1到n,围坐在一张圆桌周围,从k开始报数,数到m的人出列,下一个人又从k开始报数,到m出列,直至全出列。 步骤:1.建立一个有n个链节点无头节点的循环链表2.确定第一个报数人位置3.不断从链中删除节点至链表为空代码:#include#include#include#define ERROR 0 typedef struct原创 2017-03-15 18:23:18 · 917 阅读 · 1 评论 -
数据结构系列之链表——双链表删除
(循环判断移动指针、判断相等、分头分中,不等无法删除)dnode* del(dnode *head,int num){ //双链表删除值为num的节点 dnode *p1,*p2; p1=head; while(p1->data=num&& p1->next!=NULL) p1=p1->next; if(nu原创 2017-03-15 18:18:09 · 453 阅读 · 0 评论 -
数据结构系列之链表——双链表建立
(双链表就是双向的链表,有前驱和后继)建立时注意要开空间#include#include#include#includeusing namespace std; typedef struct student{ int data; struct student *next; struct student *pre;} dnode;原创 2017-03-15 18:16:51 · 302 阅读 · 0 评论 -
数据结构系列之链表——单链表遍历
单链表只遍历一次找中间位置的节点设两个指针,head步长为2,temp步长为1,当head到尾时temp到中间 void searchmid(node* head,node* mid){ node *temp=head; while(head->next->next!=NULL){ head=head->next->next;原创 2017-03-15 18:15:36 · 4112 阅读 · 0 评论 -
数据结构系列之链表——单链表逆置
node* reverse(node *head) { //单链表逆置 node *pPrev,*pNext; pPrev=NULL; while(head!=NULL) { pNext=head->next; head->next=pPrev; pPrev=head;原创 2017-03-15 18:14:40 · 673 阅读 · 0 评论 -
数据结构系列之链表——单链表排序
冒泡,从小到大,每轮将大的排后面node* sort(node *head){ //单链表从小到大排序 node *p; p=head; if(p==NULL&&p->next==NULL) return head; int n=length(head); for(inti=1;i从1开始原创 2017-03-15 18:13:23 · 585 阅读 · 0 评论 -
数据结构系列之链表——单链表插入值为num的节点
p0为待插入地址步骤:1.插入在头节点以前,p0->next=p1;head=p0;2.插入中间节点,p2->next=p0;p0->next =p1;3.插入尾节点,p1->next=p0;p0->next->NULL;代码:node* insert(node *head,int num){ //由小到大有序单链表插入值num的节点 node *p0原创 2017-03-15 18:12:13 · 387 阅读 · 0 评论 -
数据结构系列之链表——单链表删除值为num的节点
步骤:1.遍历链表,当num不等于节点值且next不为空时为p1/p2指针赋值2.判断p1值是否为num,是则分类分析,否则num不在链表里3.p1是头节点,删除时把head指向头节点的下一个节点,同时free p14.p1是中间节点,删除p2->next=p1->next, free p1 代码:node* del(node *head,int num){原创 2017-03-15 18:10:10 · 1619 阅读 · 0 评论 -
数据结构系列之链表——单链表的建立
#include#include#include#include#includeusingnamespace std;typedefstruct student{ int data; struct student *next;}node;node*create(){ node *head,*p,*s;原创 2017-03-15 18:08:48 · 452 阅读 · 0 评论 -
SQL面试问题及回答
1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名name kecheng fenshu张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90A转载 2017-03-15 16:58:42 · 1004 阅读 · 0 评论 -
单链表逆序
单链表逆序 第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示:图(1)初始转载 2017-03-14 12:33:50 · 291 阅读 · 0 评论 -
二叉树深度优先遍历和广度优先遍历【C++】
深度优先遍历,也就深入的遍历,沿着每一个分支直到走到最后,然后才返回来遍历剩余的节点。二叉树不同于图,图需要标记节点是否已经访问过,因为可能会存在环,而二叉树不会出现环,所以不需要标记。那么,我们只需要一个栈空间,来压栈就好了。因为深度优先遍历,遍历了根节点后,就开始遍历左子树,所以右子树肯定最后遍历。我们利用栈的性质,先将右子树压栈,然后在对左子树压栈。此时,左子树节点是在top上的,所以可以先转载 2017-04-14 19:20:55 · 1931 阅读 · 0 评论