![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法-基础
超超级钢铁侠
每天进步一点点
展开
-
模板函数练习
题目:试编写一个模板函数Input,它要求用户输入一个非负数,并负责验证用户所输入的数是否真的大于或等于0,如果不是,它将告诉用户该输入非法,需要重新输入一个数。在该函数成功退出之前,应给用户三次机会。如果输入成功,函数应当把所输入的s数作为引用参数返回。输入成功时,函数应返回true,否则返回falseVS2013 下的解答:#includeusing namespace std;原创 2015-12-26 23:45:02 · 529 阅读 · 0 评论 -
模拟指针学习笔记(1)-实现模拟指针系统
使用模拟指针有时比使用指针描述更方便间接,甚至更快。下面用数组实现指针的模拟。 创建SimNode类定义结点:template<class T>class SimNode {friend SimSpace<T>;private: T data; int link;};定义功能:template<class T>class SimSpace {public: Si原创 2016-08-10 00:09:37 · 482 阅读 · 0 评论 -
指针数组的应用-间接寻址表
采用间接寻址可以非常快速地访问元素,用一个指针来跟踪每个元素,元素可能位于动态分配的节点或数组之中。首先定义好该数据结构的功能:template<class T>class IndirectList {public: IndirectList(int MaxListSize = 10); ~IndirectList(); bool IsEmpty() { return l原创 2016-08-03 10:34:25 · 400 阅读 · 0 评论 -
数据结构(C++实现)--链表(1) 基本实现
template <class T>class ChainNode {friend Chain<T>;private: T data; ChainNode<T> *link;};template<class T>class Chain {public: Chain(first = 0); ~Chain(); bool IsEmpty() const原创 2016-07-30 23:41:08 · 264 阅读 · 0 评论 -
数据结构(C++实现)--链表(2) 功能扩充
在链表基本功能的基础上扩充一些功能。 1.在链表末尾增添一个元素Append():template<class T>Chain<T>& Chain<T>::Append(const T&x){ ChainNode<T> *y; y->data = x; y->link = 0; if (first) { last->link = y;原创 2016-07-31 11:30:19 · 440 阅读 · 0 评论 -
简单贪心算法问题--找零钱
问题:很简单,先找面值大的。#include<iostream>using namespace std;void find_change(int total_change){ int Q, D, N, P; Q = D = N = P = 0; if ((total_change / 25 > 0) && (total_change > 10)) {原创 2016-07-29 17:34:46 · 1264 阅读 · 0 评论 -
判断一个栈是不是回文
题目:判断一个栈(字符串)是不是回文。 可以将字符串依次压入栈中,然后在依次pop( ),得到原来字符串的逆置串,再将其与原来字符串依次比较,若始终相同,则说明栈是回文。 代码如下://判断一个栈是不是回文#include "stdafx.h"#include<iostream>#include<stack>using namespace std;bool Judge_stack(cha原创 2016-07-17 21:10:19 · 684 阅读 · 0 评论 -
快慢指针学习
在读July的《编程之法》时,遇见一个问题,题目是这样的:判断一条单向链表是不是回文。 July作的分析如下:易于想到的思路是采用两个指针从两边或者从中间开始遍历,并判断对应的字符是否相等。但由于单链表是单向的,如何实现双向遍历呢?比较常见的思路是采用经典的慢指针方法,可先定位到链表的中间位置,再将链表的后半段逆置,然后用两个指针同时从链表头部和中间开始逐一向后遍历比较。原创 2016-06-27 18:44:56 · 1098 阅读 · 0 评论 -
print all permutation of a string(recursion)
Input a string, please print all permutation of it. For example, input”abs”,the output should be”abs”, “asb”, “bas”,”bsa”,”cas”,”csa”.The recursion version:#include<iostream>using namespace std;void翻译 2016-06-01 16:40:13 · 442 阅读 · 0 评论 -
求解数组的所有子集
题目:试编写一个递归函数,用来输出n个元素的所有子集。例如,三个元素(a,b,c)的所有子集为{},{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}.#includeusing namespace std;void SubElements(char *arr,int *tar,int n){if (n == 5){cout if (ta原创 2015-12-26 23:54:57 · 640 阅读 · 0 评论 -
非递归计算阶乘
题目:试编写一个非递归函数来计算n!.#includeusing namespace std;template T Multipn(T n){int s=1;for (int i = 1; i {s*=i;}return s;}int main(){int m;cout cin >> m;int a = Multipn(m);原创 2015-12-26 23:49:28 · 882 阅读 · 0 评论