原创 C語言下的FILE指針與Linux的文件描述符

FILE*:它是C庫中定義的一個結構體指針,我們在C語言文件操作時打開一個文件返回的指針類型就是它,在C庫中是這樣定義的,其中的_file它是一個整數,就是作爲文件索引的描述符,C庫是建立在系統調用上的,這個FILE結構體可以說是一個包裝

原创 簡單的動態線性表

頭文件#ifndef __TEST_H__ #define __TEST_H__ #include<stdio.h> #include<string.h> #include<assert.h> #include<malloc.h> #de

原创 數據結構----稀疏矩陣的快速轉置

使用兩種方法將稀疏矩陣快速轉置#include<iostream> #include<vector> using namespace std; template<class T> struct Triple  //三元組 { size

原创 數據結構--二叉樹(1)

二叉樹構建:二叉樹的構建採用的是先序遍歷,->先儲存根節點然後左右節點,用遞歸的思想將所有數據放在樹中。代碼實現:實現了4種訪問方法,先序,中序,後序,和層序的訪問方法都採用遞歸的方式。#include<iostream> #includ

原创 進程間通信(2)消息隊列

消息隊列也是一種用於進程間通信的方式,它放在計算機內核中,並由消息隊列表示符(類比文件描述符)標識,它由操作系統維護。消息隊列的特點:1>它支持進程間雙向無阻塞的通信。2>它是面向消息傳遞的。3>它的生命週期是隨計算機內核的。下圖列出了消

原创 數據結構--二叉樹的線索化

線索二叉樹它解決了無法直接找到該結點在某種遍歷序列中的前趨和後繼結點的問題,出現了二叉鏈表找左、右孩子困難的問題,線索二叉樹又分爲前序線索化,中序線索化和後序線索化,分別用不同的邏輯去實現。線索二叉樹的實現思想:借用一個枚舉類型tag其中

原创 進程間通信(1)---匿名管道與命名管道

管道是進程間通信一種基本的的一種方式,管道又分爲兩種,匿名管道和命名管道,先說匿名管道匿名管道(pipe)#include <unistd.h> int pipe(int filedes[2]);調用pipe時會在內核中開闢一個緩衝區,使

原创 指針數組與數組指針 和 函數指針與函數指針數組

很容易混淆的概念其實並不難理解1,指針數組;看字面意思就知道這一定是一個數組,裏面的原酸全部是指針例如,定義一個簡單的指針數組char  *p[10];   //這就是一個包含十個字符指針的數組。例:#include<stdio.h>in

原创 不使用(a + b) / 2這種方式,求兩個數的平均值

#include<stdio.h> int ave(int a, int b) { return (a & b) + ((a ^ b) >> 1); } int main() { int a = 10; int b = 14; print

原创 數據結構-- 廣義表

廣義表(Lists,又稱列表)是一種非線性的數據結構,是線性表的一種推廣。即廣義表中放鬆對錶元素的原子限制,容許它們具有其自身結構。思想:廣義表就類似下圖的結構,他的大體(下圖第一行)相當於一個帶頭結點的鏈表,             

原创 揭露函數所傳遞參數的本來面目

傳遞函數時的會發生參數拷貝,新建地址,但是數組是除外的。例1;把兩個數由小到大輸出我們用兩種不同的方式來驗證我所說的機制。方式一;直接傳。(不會發生交換)#include<stdio.h> void change(int a, int b

原创 左右翻轉二進制數==》繁瑣與精簡

實現://00000000000000000000000000011001//10011000000000000000000000000000這種翻轉方法一和方法二思路大致一樣,可以方法二卻十分麻煩。方法一(簡單)#include<std

原创 使用可變參數列表實現求平均值的函數

#include<stdio.h> #include<stdarg.h> int average(int n, ...) { va_list num;--》va_list是類型,num是變量 va_start(num, n);初始化

原创 簡單的冒泡排序

冒泡排序是一種簡單的排序方法。#include<stdio.h> int main() { int arr[] = { 1, 3, 5, 6, 8, 4, 2, 9, 7, 10 }; int i = 0; int k = 0;

原创 判斷一個數或者一串字符串是不是迴文數

一、判斷一個整數是不是字符串 例123321是迴文數#include<stdio.h> int my_reserve(int num) {  int sum = 0;  while (num)  {   int tmp = 0;   tm