原创 C語言實現無頭節點的單鏈表

測試代碼 singlelinkedlist.h頭文件 #ifndef __SINGLELINKEDLIST_H__ #include<stdio.h> #include<windows.h> #include<assert.h> ty

原创 C語言中的單鏈表面試題----基礎

題目總覽 從尾到頭打印單鏈表刪除一個無頭單鏈表的非尾節點在無頭單鏈表的一個節點前插入一個節點單鏈表實現約瑟夫環逆置/反轉單鏈表單鏈表排序(冒泡排序&快速排序)合併兩個有序鏈表,合併後依然有序查找單鏈表的中間節點,要求只能遍歷一次鏈表查找

原创 Linux下的共享內存

 共享內存( shared memory ) :共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是最快的 IPC 方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他

原创 模擬實現C庫函數strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

1、模擬實現strcpy char *my_strcpy( char *dest, const char *str) { assert(dest != NULL); assert(str != NULL); while (*des

原创 Linux下的管道pipe----管道容量和實現機制

  管道容量     linux上的PipE容量爲(capacity)65536個字節;實驗得到Ubuntu的PIPE_BUF爲4096。    當 管道的寫端存在時,如果請求的字節數目大於PIPE_BUF,則返回管道中現有的數據字節數,

原创 Linux下的TCP連接

TCP連接可以分爲三個情況,第一種是單進程,一個服務端只能有一個客戶端;第二種是多進程,一個服務端可以接受多個客戶端;第三種是多線程,相對於多進程而言更穩定,因爲線程相對於進程是各自私有資源,各自獨立。 第一種—–單進程 tc

原创 C語言下的qsort函數

qsort是編譯器自帶的快速排序函數 函數原型爲void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 參

原创 Linux下的守護進程

守護進程也稱精靈進程(Daemon),是運行在後臺的一種特殊進程。它獨立於控制終端並 且週期性地執行某種任務或等待處理某些發生的事件。守護進程是一種很有用的進程。 Linux的大多數服務器就是用守護進程實現的。比如,Internet服務器

原创 C語言下的靜態順序表

靜態順序表的實現 seqlist.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<stdio.h> #include<stdlib.h> #include<assert

原创 Linux下的信號量

linux下的信號量本身就是臨界資源,所以PV操作都是原子操作。 下面是實現二元信號量的代碼,二元信號量就是互斥鎖。 信號量代碼中的semop函數是進行PV操作的核心函數,semop的函數原型爲:                    

原创 C語言的單鏈表面試題----進階

題目 判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?並計算每個算法的時間複雜度&空間複雜度。判斷兩個鏈表是否相交,若相交,求交點。(假設鏈表不帶環)判斷兩個鏈表是否相交,若相交,求交點。(假設鏈表可能帶環)【升級版】 求帶環鏈表

原创 C語言---靜態內存結構體實現通訊錄

contact.h #pragma once #include<stdio.h> #include<stdlib.h> #include<string.h> #define NAME_MAX 20 #define SEX_MAX 5

原创 Linux下的atexit,exit,_exit函數

在Linux中函數的退出有以下8種情況,其中前5種爲正常情況,後3種爲異常情況 1 從main函數返回; 2 調用exit函數; 3 調用_exit或_Exit; 4 最後一個線程從啓動例程返回; 5 最後一個線程調用pthread_e

原创 模擬實現C庫函數strncpy、strncat、strncmp

1.模擬實現strncpy char *my_strncpy(char *dest, const char* str, int count) { assert(dest != NULL); assert(str != NULL);

原创 Linux下的FILE*與fd

 1. 文件描述符: 在linux系統中,設備也是以文件的形式存在,要對該設備進行操作就必須先打開這個文件,打開文件就會獲得文件描述符,它是個很小的正整數。每個進程在PCB(Process Control Block)中保存着一份文件描述