原创 【C語言】 實現strncpy,strncat,strncmp

  //strncpy 與strcpy無異,只是拷貝的塊大小不一樣,strncpy只是向後拷貝n個字節的內容 #include<stdio.h> #include<assert.h> char *my_strncpy(char *de

原创 【C語言】 檢測大小端存儲

#include <stdio.h> int sys_check() {     int i = 1;     char *pi = (char *)&i;  //強制類型轉換爲char *,取首字節的內容,用以判斷條件     //if

原创 【Linux】 find指令(文件查找)

   每一種操作系統都有成千上萬的文件組成,對於linux這樣“一切皆文件”的操作系統來說更不例外,大家應該都能很輕鬆使用windows下的文件查找功能,但是對linux這一功能可能並不是很熟悉,其實想玩linux的你更要牢牢掌握這個命令,

原创 【C語言】 字符串操作函數及內存拷貝函數歸總

今天在這裏把零散的一些常用的字符串操作函數和內存拷貝函數進行一下歸總實現。一 . 字符串操作函數字符串操作函數有很多,這裏我列舉一些常用的函數,以及自實現的代碼:字符串拷貝函數:函數原型:char* my_strcpy(char* dst,

原创 【數據結構】 二叉樹

二叉樹概念在計算機科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用於實現二叉查找樹和二叉堆。二 叉樹的每個結點至多隻有二棵子樹(不存

原创 【數據結構】 一個數組實現兩個棧【面試】

以前,我們實現一個棧,輕輕鬆鬆,無需考慮太多因素,即可實現。現在,要求在一個數組裏實現兩個棧,那麼在數組裏怎麼實現棧呢?無非就是下標索引,方法也不侷限一種,例如:用奇數下標作爲棧s1的結構,用偶數作爲s2的結構;再者:一前一後的結構,棧s1

原创 【C++】 淺析智能指針

引言:由於 C++ 語言沒有自動內存回收機制,程序員每次 new 出來的內存都要手動 delete。程序員忘記 delete,流程太複雜,最終導致沒有 delete,異常導致程序過早退出,沒有執行 delete 的情況並不罕見。RAII(R

原创 【數據結構】 棧

棧結構,通俗易懂,特點:先進後出,後進先出。以下,僅對於棧結構常用的操作進行實現包括:        入棧(push),出棧(pop),判空(empty),棧頂元素(GetTop)#include <iostream> using name

原创 【數據結構】 兩個棧實現一個隊列【面試】

棧結構:先進後出,後進先出,只允許在棧尾操作。隊列:先進先出,在隊尾入隊,在隊頭出隊。要想用兩個棧實現一個隊列,就需要使用一個相當於中間量的結構進行隊列的入隊和出隊操作。用圖形象化爲:這樣問題就從圖中得出了思路:入隊操作:把入隊元素一一存入

原创 【C++】 淺析異常

所謂異常,顧名思義就是不正常,有問題。對於人來說有不正常的時候即生病身體不適,那麼對於程序也一樣,也有不正常即代碼“有病”。那麼,既然有病就要治療,就要對症下藥!這樣才能恢復正常。廢了這麼多話,還是引出我們C++的“異常”概念。異常,讓一個

原创 【數據結構】 出棧序列的合法性【面試】

之前我們對棧已經有所瞭解,先進後出,後進先出這是棧的兩大特性,那麼,我們經常會碰到這種題,例:有一組元素abcdef,按先後順序進棧,那麼出棧時哪些情況是非法的?A.   fedcbaB.   abdcefC.   acbdefD.   a

原创 【C++】 斐波那契數列

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13

原创 【C++】 單鏈表 .cpp

之前,在C語言階段使用了C編寫單鏈表,簡單易懂,那麼,今天使用C++再次編寫單鏈表,旨在對比兩者之間的區別和異同:下面就是cpp實現的代碼:SList.h文件:#pragma once typedef int DataType; cla

原创 【C++】 雙向鏈表.cpp

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接後繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向循環鏈表,因爲雙向鏈表解決了單向鏈表的不足和問題

原创 【C++】 淺析深淺拷貝

  C++中深拷貝和淺拷貝的問題是很值得我們注意的知識點,如果編程中不注意,可能會出現疏忽,導致bug。本文就詳細講講C++深淺拷貝的種種。  我們知道,對於一般對象:    int a = 1;     int b = 2;  這樣的賦值