数据结构和算法
数据结构和算法
hjw322
Stay hungry,stay foolish
展开
-
螺旋三角形
题目:请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。例如:当n=3时,输出:1 2 36 45当n=4时,输出:1 2 3 49 10 58 67当n=5时,输出:1 2 3 4 512 13 14 611 15 710 89要求:程序运行时,要求用户输入整数n(3~20)程序输出:方阵的上三角部分。要求格式:每个数据宽度为4,右对齐。解题思路:1、先水平向右打印值原创 2021-06-08 00:27:22 · 707 阅读 · 0 评论 -
螺旋队列之算法分析
求解螺旋的队列的步骤如下:1、求坐标(x, y)所在的圈数n; int n = abs(x) > abs(y) ? abs(x) : abs(y);2、求前n-1圈的总个数;如下图所示的红色数字可看出规律:第0圈:12第1圈:32第2圈:52第3圈:72第n-1圈:(2 * (n - 1) + 1)2int value = pow(2 * n - 1, 2);3、求坐标(x, y)在第n圈的位置;我们将坐标分为上、下、左、右四个位置:3.1、坐标在上:如下图所示:v原创 2021-06-06 00:15:49 · 231 阅读 · 0 评论 -
数据结构和算法--顺序循环队列(C++实现)
把队列这种头尾相接的顺序存储结构称为循环队列front:指向对头元素的位置rear:指向队尾元素的下一个位置对列满的条件:(real + 1) % QueueSize == front当对满时,数组中还有一个空闲的元素。队列长度:(rear - front + QueueSize) % QueueSize#include <iostream>const unsigned MAX_SIZE = 10;template<typename T>class CycleQ原创 2020-07-12 23:16:26 · 333 阅读 · 0 评论 -
数据结构和算法--链队列(C++实现)
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,简称链队列。#include <iostream>template<typename T>struct queue_node{ queue_node(const T& d) : next(nullptr), data(d) {} queue_node* next; T data;};template<typename T>class LinkQueue{public:原创 2020-07-12 16:39:04 · 101 阅读 · 0 评论 -
数据结构和算法--链栈(C++实现)
定义:栈是限定仅在表尾进行插入和删除操作的线性表。把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。#include <iostream>template<typename T>struct stack_node{ stack_node(const T& d) : next(nullptr), data(d) {} stack原创 2020-07-12 00:29:51 · 269 阅读 · 0 评论 -
数据结构和算法--双向链表(C++实现)
#include <iostream>template<typename T>struct list_node{ list_node() : next(nullptr), prev(nullptr) {} list_node(const T& d) : next(nullptr), prev(nullptr), data(d) {} list_node* next; list_node* prev; T data;};template<typen原创 2020-07-11 22:50:49 · 142 阅读 · 0 评论 -
数据结构和算法--单链表(C++实现)
#include <iostream>template<typename T>struct list_node{ list_node() : next(nullptr) {} list_node(const T& d) : next(nullptr), data(d) {} list_node* next; T data;};template<typename T>class SingleLinkList{public: Single原创 2020-07-11 18:44:47 · 132 阅读 · 0 评论