数据结构上机整理
文章平均质量分 69
黎栗栗
这个作者很懒,什么都没留下…
展开
-
二叉树的层次遍历、二叉树求宽度、图的广度优先搜索
二叉树的层次遍历、二叉树求宽度、图的广度优先搜索一类问题,层次遍历思想。1. 二叉树的层次遍历/*1.将根结点入队2.出队访问出队结点,若有左子树将左子树入队,若有右子树将右子树入队循环2直到队空。*/Status LevelOrder(BiTree T){ queue<BiTree> q; BiTree p; q.push(T); while (q.empty() == false) { p = q.front(); q.pop(); visit(p);原创 2021-12-12 21:31:43 · 662 阅读 · 0 评论 -
C++ STL与string
C++ STL与string1. stack#include <stack> //包含头文件stack<char> s; //声明一个char类型的栈s.push('#'); //入栈s.pop(); //出栈optr1 = s.top(); //返回栈顶元素s.empty() == true //判空len = s.size(); //返回栈中元素个数2. queue#include<queue> //包含头文件queue<char原创 2021-12-12 16:35:25 · 123 阅读 · 0 评论 -
五、树与二叉树
五、树与二叉树1.二叉树的遍历1)求二叉树中值为x的节点所在的层号二叉树bt采用二叉链表存储,设计一个算法level(bt,x)求二叉树中值为x的节点所在的层号。注意:x所在层数不一定只有一层,所以不能用返回值的方式,只能直接在函数中输出。找到一个层数后,需要继续往下找,不能直接返回。思想:遍历:先序、中序、后序、层次均可。法1: 先序遍历,传参法2: 先序遍历,带返回值(注:若该数在树中出现不只一次,即有很多层时,由于返回值只能返回一个数,所以该方法只能求出一层,这是本方法的缺陷。)法3原创 2021-07-07 21:35:24 · 312 阅读 · 0 评论 -
四、栈、队列
四、栈、队列、递归、动态规划原创 2021-07-03 20:54:56 · 358 阅读 · 0 评论 -
三、线性表——链表
三、链表1.快慢指针1)如何判断单链表是否存在环 ?问题描述:给定一个单链表L,L为头指针,判断该链表内是否局部存在环?方法: 快慢指针,快指针的速度为慢指针的2倍,若快慢指针相遇则有环。#include<iostream>using namespace std;typedef struct LNode //定义单链表{ int data; struct LNode *next;}LNode, *LinkList;void List_TailInsert(LinkL原创 2021-07-02 17:12:00 · 452 阅读 · 0 评论 -
二、线性表——顺序表
二、顺序表1、顺序表处理问题的方法:从头(惯性思维)、从尾、从两端已知一个顺序表L(整数),实现一个函数将调整顺序表中的数字顺序,使得所有奇数位于表L的前半部分,所有偶数位于数组的后半部分。1)如果把题目改成把顺序表中的数按照大小分为两部分,负数都在非负数的前面,该怎么做?再定义一个函数???2)或者再改为为:把顺序表中的数分为两部分,能被3整除的数放在前面,不能被3整除的数放在后面;再定义一个函数???3)是否有更好的办法?增加代码的可扩展性;函数指针:把规则写3次#include&l原创 2021-06-30 12:13:08 · 480 阅读 · 0 评论 -
一、一些常规的算法
一、一些常规的算法1、对于一个字节(8bit) 的无符号整型变量,求其二进制表示中“1”的个数。要求算法的执行效率尽可能高。#include<stdio.h>int count1(int x) //法1 { int num = 0; while(x) { if(x&1 == 1) num++; //按位与运算,x&1的结果就是取x二进制的最末位, //即可以判断x是奇数还是偶数 x = x>&g原创 2021-06-30 10:51:11 · 472 阅读 · 0 评论