原创 字符串的排列&&翻轉單詞順序列

字符串的排列 題目描述 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字符串,長度不超

原创 【劍指Offer】把數組排成最小的數

題目描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 分析   首先想到的是將數組中的數字進行排序,然後

原创 堆棧相關面試題(詳解)

1. 實現一個棧,要求實現Push(出棧)、Pop(入棧)、Min(返回最小值的操作)時間複雜度爲O(1)。 分析:設計兩個棧,一個棧用來push 、pop操作,另一個棧用來保存當前最小值Min。當push元素小於等於Min棧頂元素時,將

原创 進程調度

     這裏簡單介紹下,進程的調度原理,調度類型和常用的進程調度算法。 進程調度      說道進程調度,我們或許都有個疑問,爲什麼需要進程調度呢?進程調度的作用是什麼?      需要進程調度的理由很充分,即充分利用計算機系統中的CP

原创 Unique-binary-search-trees問題

問題1:Unique-binary-search-trees 題目描述 Given n, how many structurally unique BST's (binary search trees) that store values

原创 static、const和關鍵字volatile

static static修飾變量&修飾函數        在介紹static之前,先看下static修飾全局變量和局部變量的題。 #include<iostream> using namespace std; static int

原创 進程的概念和進程控制

    這裏將介紹進程的基本概念,什麼是進程,如何描述和組織進程,接着討論進程的狀態,最後介紹進程 控制 進程概念     1.  概念:             a. 進程是程序的一次動態執行過程             b. 擔當分配

原创 靜態庫&動態庫

      這裏將簡單介紹下什麼是靜態庫什麼是動態庫以及兩者之間的區別,在介紹之前,先介紹下什麼是函數庫,什麼時候會用到庫。 什麼是庫?      庫就是一段編譯好的二進制代碼,加上頭文件就可以供別人使用。 什麼時候我們會用到庫?    

原创 循環隊列

        隊列是一種只能在表的一端進行插入運算,在表的另一端進行刪除運算的線性表(頭刪尾插),它的存儲方式分爲順序隊或鏈隊,以循環隊列更常見。       這裏僅介紹順序隊以及順序隊存在的假溢出缺陷,進而引出循環隊列。順序隊列   

原创 main函數參數解析和可變函數列表

  main函數參數解析     main函數是有參數的,只是我們使用main函數時,大多數情況下會省略參數。接下來我們看一下main函數的原型,並對main函數的三個參數進行解析。 main函數原型 解析:        這裏有三個參

原创 編譯鏈接原理

    對於源文件是怎麼變成可執行程序的,當執行一個程序時,都做了那些處理,相信大家都比較好奇。在這裏將簡單介紹下程序的編譯鏈接原理。    在ANSI C的任何一種實現中,存在兩種環境翻譯環境和執行環境。翻譯環境主要將源代碼轉化爲可執行

原创 排序算法(4)---歸併排序&總結

歸併排序      定義     歸併排序(MERGE-SORT)是建立在歸併操作上的一種有效的排序算法,該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合併,得到完全有序的序列;即先使每個

原创 環境變量&進程程序替換

環境變量       環境變量一般是指在操作系統中用來指定操作系統運行環境的一些參數。 如:我們在編寫C/C++代碼時候,在鏈接的時候,從來不知道我們的所鏈接的動態靜態庫在哪裏,但是照樣可以鏈接成功,生成可執行程序,原因就是有相關環境變量

原创 排序算法(3) ---交換排序

  應用交換排序基本思想的主要排序方法有:冒泡排序和快速排序。這裏將主要介紹快速排序,以及快速排序的遞歸與非遞歸的實現和對快速排序的優化冒泡排序     冒泡排序是將大數或小數不斷後移的一種思想,比較和交換都發生在兩個相鄰元素之間。   

原创 二維數組動態開闢與傳參

    這裏簡單介紹動態二維數組的開闢與釋放,以及二維數組傳參的幾種方法動態二維數組的開闢與釋放     方法1:直接開闢一維數組                eg:   int *p = new int[10*10];//當成一維數組