原创 用棧實現隊列(C++)

用棧實現隊列(C++) 準備兩個棧 instack,outstack 入隊時,push到instack棧中 出隊時: 1.如果outstack爲空,把instack棧中元素每一個push到outstack,並從instack中彈出

原创 十進制轉換成十六進制、八進制、二進制。

十進制轉換成十六進制、八進制、二進制 舉例驗證十進制轉二進制,十進制轉換十六進制: 代碼演示: #include <stdio.h> #include <stdlib.h> #include <string.h> void t

原创 不用庫函數,用C語言實現將一整型數字轉化爲字符串,函數原型如下:void itoa(int n, char s[])

用C語言實現將一整型數字轉化爲字符串 熟悉ASCII碼,要點:數字0與字符‘0’之間的轉化. 代碼段: void itoa(int n,char s[]) { char * str = s; int i = 0; while

原创 將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。C語言

將一個正整數分解質因數. 首先了解質數的定義:指數是指在大於1的自然數中,除了1和它本身以外的不再有其他的因數的自然數. 再者需要知道什麼是因數,因數是指:整數a除以整數b(b!=0)d的商正好是整數而沒有餘數,我們就說b是a的因

原创 有效的括號(C語言實現)

有效的括號 給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判斷字符串是否有效。 C語言中沒有棧容器,所以自己創建了一個棧 typedef struct Node { char s; st

原创 C語言頭文件中尖括號和引號的區別

頭文件的區別 在平時編程的時候經常會用到C語言的庫函數,當然也會用到自己封裝的庫函數。#include<xxx.h>和#include"xxx.h"到底有怎樣的區別呢? 首先聲明:凡是以#開頭的代碼都先有預處程序予以處理,當預處理

原创 循環隊列(附分析圖)

循環隊列 列表屬性front始終指向第0個元素 新添加元素:(動態數組容量不夠的情況在下面) 刪除元素: 添加元素:(實現循環的功能) 動態擴容: .h文件 class CircleQueue { private: int

原创 有效的括號(C++實現)

有效的括號(C++實現) C++中有棧容器,寫起來比上一篇用C語言寫的代碼簡潔了不少 class Solution { public: bool isValid(string s) { stack<char

原创 單鏈表的刪除(已知被刪除結點)

鏈表的刪除(已知被刪除結點) 在刪除鏈表點的時候,通常使用遍歷找到被刪除結點的前一個結點pPrev,指向被刪除結點的下一個結點 pPrev->next = pCurrent->next。然後delete pCurrent即可; 但

原创 輸入年份、和這一年的第N天,最後算出這一天是這一年的幾月幾日。(區分閏年).C語言

輸入年份、和這一年的第N天,最後算出這一天是這一年的幾月幾日 首先需要了解閏年的定義:能被4整除,不能被100整除。或者 能被400整除. 判斷閏年: int isLeapyear(int year) { if((year %

原创 C語言:已知任意的年份和月份顯示當月的日曆

已知任意的年份和月份顯示日曆表 根據基姆拉爾森計算公式,算法如下: w = (day+2month+3(month-1)/5+year+year/4-year/100+year/400)%7; 解釋:公式中的日期中的日數,mont

原创 鏈表的反轉(遞歸和非遞歸)

鏈表的反轉(遞歸和非遞歸兩種) 鏈表的反轉 示例 輸入:1->2->3->4->5 輸出:5->4->3->2->1 遞歸 struct ListNode { int val; ListNode *next; ListN

原创 輸入一行字符,分別統計出其中英文字母、空格、數字的個數。C語言

統計出一字符串中英文字母、空格、數字的個數。 演示代碼: void checkout(const char * str,int * alphabet,int * blank, int *figure) { if(str == N

原创 翻轉二叉樹(遞歸和迭代)

翻轉二叉樹(遞歸和迭代) 遞歸,先序遍歷 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int