原创 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)。 命令行模式:控制屏幕光標的移動、字符、字或行的刪除,移動複製某區段