原创 C語言簡單實現三子棋

首先我們在VS2013中建立一個test.c和game.c文件,再建立一個test.h頭文件, 其中game.c文件裏面編寫三子棋的主要功能實現, test.c文件用於三子棋功能測試, test.h文件用於聲明函數。 函數解釋:memse

原创 數據結構 迷宮的非遞歸實現(回溯法)

迷宮的非遞歸實現(回溯法)        首先在項目工程所在文件夾下放入存有迷宮數據的文件Maze.txt,通過fopen("Maze.txt","r")讀取文件中的數據,並進行轉化。也可以在代碼中直接定義一個二維數組來構建迷宮

原创 求二叉樹中兩個節點的最近公共祖先(三叉鏈,搜索樹,普通二叉樹)

求二叉樹中兩個節點的最近公共祖先。 要求:分別考慮以下三種情況        1、二叉樹每個節點有parent(三叉鏈)        2、二叉樹是搜索二叉樹。        3、就是普通二叉樹。(儘可能實現時間複雜度爲O(N)

原创 【基礎題】--實現二叉樹的前序 / 中序 / 後序非遞歸遍歷

       二叉樹的遞歸遍歷,我們知道是很簡單的,而非遞歸遍歷則需要利用棧的先進後出特性來實現。 1、前序非遞歸遍歷        利用雙重循環,內部循環將左孩子要入棧中直到左孩子爲空,並且壓一個輸出一個數據,再判斷棧頂的右孩子。若

原创 判斷一棵樹是否是完全二叉樹

完全二叉樹概念        若設二叉樹的深度爲h,除第h 層外,其它各層(1~h-1) 的結點數都達到最大個數,第h 層所有的結點都連續集中在最左邊,這就是完全二叉樹 思路 :利用隊列queue實現(層序遍歷思想)        

原创 九大排序算法

       排序算法一直都是各個公司年年都會拿出的面試題,作爲初入社會尋找工作的小白,掌握各個排序算法是及其重要的。 1、冒泡排序(時間複雜度O(N^2),空間複雜度O(1),穩定)        先從簡單的來,冒泡排序是學習C語言是必

原创 判斷一個節點是否在二叉樹中,判斷tree2是否爲tree1的子樹

1、判斷一個節點是否在一棵二叉樹中。        先判斷根節點,遞歸判斷左子樹,遞歸判斷右子樹。 2、判斷一顆二叉樹是是否是另一顆樹的子樹。比如tree2是tree1的子樹。        先判斷根,根相同再判斷左右子樹如果所有的都

原创 shell腳本--實現彩色進度條

先看代碼吧! !/bin/bash i=0 str='' label=('|' '/' '-' '\\') #在進度條末尾出現旋轉線條 while [ $i -le 100 ] do let index=i%4 l

原创 基於單鏈表和環形隊列的生產者-消費者模型

背景        某個模塊負責產生數據,而這些數據由另一個模塊來負責處理。那麼產生數據的模塊就稱爲生產者,處理數據的模塊就稱爲消費者。        單單有生產者和消費者還不能稱爲生產者-消費者模型,我們還需要一個交易的場所(緩衝區)

原创 套接字(socket)編程簡單實現server-client聊天程序

1、socket       在TCP/IP協議中,一個IP地址標識網絡通訊中唯一一臺主機,而一個IP地址+一個TCP(或UDP)端口號就可以標識網絡通訊中的一個進程,此時的IP地址+端口號即稱爲socket。       內存中的多字

原创 CRC冗餘校驗碼

1、基本概念        CRC(Cyclic Redundancy Check)是數據通信領域中最常用的一種查錯校驗碼,對數據進行多項式計算,並將得到的結果附在幀的後面,接收設備也執行相似的算法以保證數據傳輸的正

原创 shell腳本--命令替換``(反引號)與$()的區別與聯繫

命令替換就是指shell能夠將一個命令的標準輸出插在一個命令行中任何位置。 本文介紹兩種命令替換:``和$()者兩種命令的功能是相同的,在執行一條命令是,會將``或者$()中的語句當做命令執行以便,再把結果加入到原命令中重新執行。 但是兩

原创 網絡基礎隨堂筆記

1、OSI七層模型     OSI將網絡從邏輯上分爲了七層,其主要目的是爲解決異種網絡互連時所遇到的兼容性問題,主要功能是幫助不同類型的主機實現數據傳輸。但OSI七層協議體系結構既複雜有不實用。所以我們主要分析TCP/IP四層(或五層)模

原创 BinaryTree

BinaryTree 一、介紹在前面        二叉樹結構是學習數據結構的一大重點,是學習後面的搜索二叉樹、AVL樹、紅黑樹等的基礎(後面會一一介紹)。        二叉樹的應用也很多,比如可以幫助我們做排序的工作,提高查找數據的速

原创 vim的使用及其簡單配置

vim的使用及簡單配置 本文討論vim的三種模式,命令行模式(command mode)、插入模式(insert mod)、底行命令模式(last line mode)。 命令行模式:控制屏幕光標的移動、字符、字或行的刪除,移動複製某區段