原创 複製一個鏈表

typedef struct LNode { int data; LNode *next; //指向下一個 LNode *Random; //隨意指向一個節點 }Lnode,*LinkList;   ////////////

原创 字符串是匹配

假設兩個字符串中所含有的字符和個數都相同我們就叫這兩個字符串匹配,  比如:abcda和adabc,由於出現的字符個數都是相同,只是順序不同,  所以這兩個字符串是匹配的。要求高效!int Match_String(char *s1,ch

原创 通過移位把十進制轉換成二進制和十六進制

這個試題可以充分考到個人對以爲和與的操作 char *int_to_bit(long data) { int bit_num=sizeof(long)*8; char *temp_bit=(char*)malloc(bit_num+1

原创 用1、2、2、3、4、5這六個數字,寫一個main函數,打印出所有不同的排列

用1、2、2、3、4、5這六個數字,寫一個main函數,打印出所有不同的排列, 如:512234、412325等,要求:"4"不能在第三位,"3"與"5"不能相連.。我弄了一個很笨 的辦法。 void Print_Int(int *s)

原创 刪除字符串開始及末尾的空白符,並且把數組中間的多個空格(如果有)符轉化爲1個

刪除字符串開始及末尾的空白符,並且把數組中間的多個空格(如果有)符轉化爲1個 ////////////////////////////////////////////////////////////////////////// //刪除字

原创 將一個字符串中的大寫字母放到小寫字母的後面,而且移動後相對順序不改變

這個題目有很多方法,爲了複習棧的應用。我用棧作爲緩衝區,進行調序。採用的是順序棧// 初始化一個順序棧#define MAX_SIZE 100//初始棧的大小 void IniqStack(qStack &s) { s.i=0; s

原创 /有一個函數fun能返回0和1兩個值,返回0和1的概率都是1/2,問怎麼利用這個函數得到另一個函數fun2,使fun2也只能返回0和1,且返回0的概率爲1/4,返回1的概率爲3/4

int Fun2() //這是1/4和3/4的。 { srand((unsigned)time(NULL)); int a=Fun1()*(rand()%7+1);//a爲0的概率是1/2, 爲數字的概率也是1/2.產生1到8之間的

原创 有兩個序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列,對於1

基本思路和上一篇是一樣的: 1:申請個K大小的輔助數組。 2:給輔助數組賦值,並且進行從小到大的排序 3:依次用後面的數字和與輔助數組的最大數進行比較,如果小於則把輔助數組的最大數替換,大於的話,則進行下一個比較 代碼的效率不高,誰有好的

原创 對稱子字符串的最大長度

輸入一個字符串,輸出該字符串中對稱的子字符串的最大長度。比如輸入字符串“google”,由於該字符串裏最長的對稱子字符串是“goog”,因此輸出4 //對稱子字符串的最大長度 bool Symmetric_String(char *s)

原创 鏈表相鄰元素翻轉,如a->b->c->d->e->f-g,翻轉後變爲:b->a->d->c->f->e->g

鏈表相鄰元素翻轉,如a->b->c->d->e->f-g,翻轉後變爲:b->a->d->c->f->e->g  struct DNode { DNode *pre; DNode *next; int data; }; typedef

原创 順時針輸出數組

輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字。 例如:如果輸入如下矩陣: 1              2              3              4 5              6           

原创 //實現一個atoi的函數,atoi是將字符串轉換成整數

int string_to_int(char *s) { int sum=0,i=0; char *p=s; while(*p!='\0') // 出現“.”的情況 { if (*p=='.') { break;

原创 二叉樹查找不嚴格小於一個值的最大值(返回節點)。

查找一個不嚴格的小於一個值的節點,就是當二叉樹中存在這個節點的時候。直接查找出來,當二叉樹中不存在這個節點的時候查找比這個節點小的,但是在所有小於所查節點中的最大節點。這個程序中使用了棧進行中序遍歷。代碼如下:   typedef st

原创 輸入兩個整數 n 和 m,從數列1,2,3.......n 中隨意取幾個數,使其和等於 m

這個程序的基本思路是從1開始尋找,尋找裏面含有1的組合。當尋找結束後,尋找含有2的組合,然後依次進行下去。 #define N_Length 10 //定義一組1到n的數字,在這裏定義到10 int res[N_Length]; //

原创 將一句話的單詞進行倒置

比如說一句話,“I love you!”變成“you! love I”, char *Reverse(char *s) { int n=strlen(s); char temp[1000];//定義緩衝區的的大小 int q=n-1