原创 輸入一個字符串,單詞以逗號或空格隔開。要求:濾除相同的字符串,單詞以空格隔開。

#include<stdio.h> #include<string.h> void strFliter(char *pInput)   {       char *str; <span style="white-space:pre"> <

原创 字符串的全排列和組合算法

全排列在筆試面試中很熱門,因爲它難度適中,既可以考察遞歸實現,又能進一步考察非遞歸的實現,便於區分出考生的水平。所以在百度和迅雷的校園招聘以及程序員和軟件設計師的考試中都考到了,因此本文對全排列作下總結幫助大家更好的學習和理解。對本文有任

原创 在 Linux 下用戶空間與內核空間數據交換的方式,第 1 部分: 內核啓動參數、模塊參數與sysfs、sysctl、系統調用和netlink

一、引言 一般地,在使用虛擬內存技術的多任務系統上,內核和應用有不同的地址空間,因此,在內核和應用之間以及在應用與應用之間進行數據交換需要專門的機制來實現,衆所周知,進程間通信(IPC)機制就是爲實現應用與應用之間的數據交換而專門實現

原创 在 Linux 下用戶空間與內核空間數據交換的方式,第 2 部分: procfs、seq_file、debugfs和relayfs

一、procfs procfs是比較老的一種用戶態與內核態的數據交換方式,內核的很多數據都是通過這種方式出口給用戶的,內核的很多參數也是通過這種方式來讓用戶方便設置的。除了sysctl出口到/proc下的參數,procfs提供的大部分

原创 udev和mdev學習總結

Udev介紹 Udev分爲三個子計劃:namedev,libsysfs和udev。Namedev爲設備命名子系統,libsysfs提供訪問sysfs文件系統,從中獲取信息的標準接口。Udev是提供/dev設備節點文件的動態創建和刪除策

原创 Linux 系統內核空間與用戶空間通信的實現與分析

多數的 Linux 內核態程序都需要和用戶空間的進程交換數據,但 Linux 內核態無法對傳統的 Linux 進程間同步和通信的方法提供足夠的支持。本文總結並比較了幾種內核態與用戶態進程通信的實現方法,並推薦使用 netlink 套接字

原创 linux下熱插拔事件的產生是怎樣通知到用戶空間,kobject_uevent_env之uevent_helper

熱插拔(hotplug,打這個詞的時候我常常想到熱乾麪)不一定非要指類似U盤那樣的插入拔出,此處的熱插拔廣義上講,是指一個設備加入系統,內核如何通知用戶空間。舉個簡單的例子,如果你的電腦中有塊PCI網卡,針對該網卡的驅動程序以內核模塊的形

原创 在O(1)時間刪除鏈表結點

題目:給定鏈表的頭指針和一個結點指針,在O(1)時間刪除該結點。鏈表結點的定義如下: struct ListNode {       int        m_nKey;       ListNode*  m_pNext; }

原创 兩鏈表的第一個公共結點

題目:兩個單向鏈表,找出它們的第一個公共結點。 鏈表的結點定義爲: struct ListNode {       int         m_nKey;       ListNode*   m_pNext; }; 分析:

原创 華爲上機練習題

// StringFun.cpp : 定義控制檯應用程序的入口點。 // #include "stdafx.h" #include <iostream> #include <assert.h> #include <string> #in

原创 linux內核空間與用戶空間信息交互方法

摘要:在進行設備驅動程序,內核功能模塊等系統級開發時,通常需要在內核和用戶程序之間交換信息。Linux提供了多種方法可以用來完成這些任務。本文總結了各種常用的信息交換方法,並用簡單的例子演示這些方法各自的特點及用法。其中有大家非常熟悉的

原创 翻轉句子中單詞的順序

題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。爲簡單起見,標點符號和普通字母一樣處理。 例如輸入“I am a student.”,則輸出“student. a am I”。 分析:

原创 在字符串中刪除特定的字符

題目:輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。例如,輸入”They are students.”和”aeiou”,則刪除之後的第一個字符串變成”Thy r stdnts.”。 分析:這是一道微軟面試題。在微軟的常

原创 二叉樹的深度和廣度搜索算法

度優先搜索算法(Depth First Search),是搜索算法的一種。是沿着樹的深度遍歷樹的節點,儘可能深的搜索樹的分支。 當節點v的所有邊都己被探尋過,搜索將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的