Time of Update: 2017-01-18
c語言中棧是一種資料結構,後進先出,即最後進入棧的資料最先彈出。c語言中沒有棧這種資料類型,需要自己編程構建。下面我們就一起來瞭解一下c語言中棧的基本操作。C語言對棧的實現基本操作,操作如下:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <stdbool.h> typedef struct Node{ int data; struct Node *
Time of Update: 2017-01-18
一、資料圖片文字等都是資料,在電腦中以0和1儲存。(一)分類資料分為待用資料和動態資料。①. 待用資料:一些永久性的的資料,一般儲存在硬碟中,只要硬碟沒壞資料都是存在的。一般以檔案的形式儲存在硬碟上,電腦關機重啟後依然存在。②. 動態資料:程式運行過程中,動態產生的的臨時資料,一般儲存在記憶體中,記憶體的儲存空間一般較小,電腦關閉後這些資料就會被清除。軟體或者電腦關閉則這些臨時資料會被清除。③. 待用資料和動態資料可以轉換。④. 注意:為什麼不把動態資料存放到硬碟?因為直接存取記憶體的速度更快。
Time of Update: 2017-01-18
資料結構中的棧是什麼舉一個簡單的例子:在往箱子裡面放衣物的時候,放在最上面的衣物總是我們最後放上去的;而當我們從箱子裡取出衣物的時候,總是最先拿出上面的。這就是現實生活中的棧。準確的講,棧就是一種可以實現“先進後出(或者叫後進先出)”的儲存結構。學過資料結構的人都知道:棧可以用兩種方式來實現,一種方法是用數組實現棧,這種棧成為靜態棧;另外一種方法是用鏈表實現棧,這種棧叫做動態棧。棧中通常存放著程式的局部變數等。棧通常有出棧和入棧操作。棧的結構空棧的結構:【其實就是棧頂和棧頂都指向一個無用的頭結點
Time of Update: 2017-01-18
準備工作首先上一張圖,因為這裡只是在用C語言驗證演算法,所以沒有對介面做很好的最佳化,醜是理所應當的。瞭解了遊戲的工作原理,實際上可以將遊戲描述為四個帶有方向的同一操作: 1、將所有數字向一個方向移動至中間沒有空位
Time of Update: 2017-01-18
前言最近在複習資料結構的相關知識,感覺在初學的時候還是有很多東西沒有掌握,不過現在終於算是搞得比較有頭緒了,所以就在寫出來和大家一起分享!什麼是鏈表簡單的說,鏈表就是由多個結點離散分配,彼此通過指標相連,每個結點只有一個前驅結點和後繼結點。首節點無前驅結點,為結點無後繼結點的一種儲存結構。鏈表的結構頭結點:鏈表的第一個有效結點前面的結點,頭結點並不存放有效資料,也就是資料域為空白,加頭結點的主要目的是為了方便鏈表的操作。首節點:鏈表的第一個有效結點,結點包含資料域和指標域。尾結點:尾結點的指標域
Time of Update: 2017-01-18
typedef 聲明,簡稱 typedef,為現有類型建立一個新的名字。比如人們常常使用 typedef 來編寫更美觀和可讀的代碼。所謂美觀,意指 typedef
Time of Update: 2017-01-18
一、什麼是迴文字給定一個字串,從前往後讀和從後往前讀,字串序列不變。例如,河北省農村信用社的客服電話是“96369”,無論從後往前讀,還是從前後往後讀,各個字元出現的位置不變。二、功能實現(一)、給定一個字串,判斷該字串是否是迴文字。(二)、給定一個任一字元串,判斷是否可以轉換為迴文字,如果可以轉換為迴文字,給出具體的演算法。三、C++語言實現版本(JAVA語言版本後續實現)(一)標頭檔 (BackText.h)/** BackText.h** Created on:
Time of Update: 2017-01-18
C++函數的重載定義在同一個範圍中,函數名相同,函數的參數列表不同的函數之間構成重載關係,在不同範圍中的同名函數遵循標識符隱藏的原則ATTENTION:重載與函數的傳回值類型無關,因為聲明一個函數不需要傳回型別,所以無法用來區分哪個函數常函數和普通成員函數之間構成重載,重載時常對象調用常成員函數,一般對象調用一般成員函數class A{ … public: void getVal()const{…} void getVal(){…}};int main(){ const A
Time of Update: 2017-01-18
1. 動態記憶體分配的意義(1)C 語言中的一切操作都是基於記憶體的。(2)變數和數組都是記憶體的別名。 ①記憶體配置由編譯器在編譯期間決定 ②定義數組的時候必須指定數組長度 ③數組長度是在編譯期就必須確定的(3)但是程式啟動並執行過程中,可能需要使用一些額外的記憶體空間2. malloc 和 free 函數(1)malloc 和 free 用於執行動態記憶體分配的釋放(2)malloc
Time of Update: 2017-01-18
1、字串數字之間的轉換(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->string char *p = "OK"; string str(p);(3)char * -->CString char *p ="OK"; CString m_Str(p); //或者 CString m_Str; m_Str.Format("%s",p);(4)CString --
Time of Update: 2017-01-18
一直對C++中的delete和delete[]的區別不甚瞭解,今天遇到了,上網查了一下,得出了結論。做個備份,以免丟失。 C++告訴我們在回收用 new 分配的單個對象的記憶體空間的時候用 delete,回收用 new[] 分配的一組對象的記憶體空間的時候用 delete[]。 關於 new[] 和 delete[],其中又分為兩種情況:(1) 為基礎資料型別 (Elementary Data Type)分配和回收空間;(2) 為自訂類型分配和回收空間。 請看下面的程式。 複製代碼 代碼如下:
Time of Update: 2017-01-18
如果某個衍生類別的部分或者全部直接基類是從另一個共同的基類派生而來,在這些俄直接基類中, 從上一級基類繼承來的成員就擁有相同的名稱,因此衍生類別中就會出現同名現象。對這種類型的同名成員也要使用範圍分辨符來唯一標識,而且必須使用直接基類來進行限定。 -------------------------------------------------- /* * File: main.cpp * Author: yubao * * Created on May 31, 2009, 8:54 AM */
Time of Update: 2017-01-18
大量的安全性漏洞是由於電腦算術運算的微妙細節引起的, 具體的C語言, 諸如符號數和無符號數之間轉換, 算術運算的越界都會導致不可預知的錯誤和安全性漏洞, 具體的案例數不勝數. 作為一個系統程式員, 有必要對這些細節有深入的瞭解. 本篇參考csapp, 主要介紹如何判斷算術運算的越界問題. (雖然本篇的代碼經過大量的測試, 但本人仍然無法保證代碼的正確性, 希望大家錯誤修正). 講解的原則是"擺定理, 不證明, 寫代碼". 具體的證明過程在csapp中有詳細的講解, 也不是太難.
Time of Update: 2017-01-18
本文著重介紹如何在XCODE中,通過C++開發在IOS環境下啟動並執行緩衝功能。演算法基於LRU(最近最少使用)。有關lru詳見: http://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used
Time of Update: 2017-01-18
比如 一個函數 chat(link &a); chat(ling *a); 前者引入一個地址做形參 是不是可以把一個指標變數p。。 這麼用chat(p); 那跟第二個函數 有什麼區別呢 都是傳地址啊。。 小弟弄不明白~~ chat(int&a); chat(int *a); 這兩個函數是完全不同意義的東西,你的理解主要是在int&a和int* a這個類型上面。要注意int&和int*是兩個完全不同的類型。int&是參考型別,而int*是指向int類型變數的指標類型。 void chat(int&
Time of Update: 2017-01-18
流行的用法:用二進位的每一位代表一種狀態。 001,010,100這樣就表示三種狀態。 通過或|運算就可以組合各種狀態。 001|010=011 001|010|100=111 通過與&運算可以去除某種狀態。 111&001=110 可以定義這樣的宏組合成函數的參數 #defineP10x001L//001 #defineP20x002L//010 #defineP30x004L//100 voidFunc(long){} Func(P1|P2); 可以這樣判斷某位是否是1
Time of Update: 2017-01-18
標準(視窗)訊息:視窗訊息一般與視窗內部運作有關,如建立視窗,繪製視窗,銷毀視窗,通常,訊息是從系統發到視窗,或從視窗發到系統。發送函數SendMessage()或者PostMessage()。除WM_COMMAND之外,所有的以WM_開頭的訊息。從CWnd派生的類,都可以接受到這類訊息。注意:標準訊息並不需要我們指定處理函數名稱,是預設的對應關係。 宏名稱 對應訊息 訊息處理函數 ON_WM_CHAR WM_CHAR OnChar ON_WM_CLOSE WM_CLOSE OnClose
Time of Update: 2017-01-18
今天看博文時,看到了c++的static關鍵字的一些總結,還涉及到了一些代碼的儲存位置,為了有時間的時候能夠看一下,還是自己把它給摘抄下來吧。C++的static有兩種用法:面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。 一、面向過程設計中的static 1、靜態全域變數 在全域變數前,加上關鍵字static,該變數就被定義成為一個靜態全域變數。我們先舉一個靜態全域變數的例子,如下: 複製代碼
Time of Update: 2017-01-18
首先,我說說對C++的最直觀的感受吧!熟悉了.net 智能提示,開始一開始發現C++根本沒有提示了。後來google了一下,下載了一個visual assist 這個外掛程式,比vs自動提示強多了。 然後,就是習慣了在.net中,把所有的聲明和方法實現寫在同一檔案中。可是C++不是這麼回事。 他一個聲明在標頭檔中,實現 在源檔案中,說實在話,一開始並怎麼習慣。後來漸漸就習慣了。然後,寫C++的檔案就是真他媽的痛苦,他不比.net,微軟已經比你封裝好了,在C++中,好多東西需要自己寫。
Time of Update: 2017-01-18
一、C++標頭檔究竟是什麼,你怎麼看? 每個C++/C程式通常分為兩個檔案。一個檔案用於儲存程式的聲明(declaration),稱為標頭檔。另一個檔案用於儲存程式的實現(implementation),稱為定義(definition)檔案。C++/C程式的標頭檔以“.h”為尾碼,C程式的定義檔案以“.c”為尾碼,C++程式的定義檔案通常以“.cpp”為尾碼(像linux等系統以“.cc”或“.cxx”為尾碼)。簡而言之,就是用於聲明的檔案。