青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

A Za, A Za, Fighting...

堅(jiān)信:勤能補(bǔ)拙

題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/25411174200951262930831/

 題目:從撲克牌中隨機(jī)抽5張牌,判斷是不是一個(gè)順子,即這5張牌是不是連續(xù)的。2-10為數(shù)字本身,A1J11Q12K13,而大小王可以看成任意數(shù)字。

思路一:
我們需要把撲克牌的背景抽象成計(jì)算機(jī)語(yǔ)言。不難想象,我們可以把5張牌看成由5個(gè)數(shù)字組成的數(shù)組。大小王是特殊的數(shù)字,我們不妨把它們都當(dāng)成0,這樣和其他撲克牌代表的數(shù)字就不重復(fù)了。

接下來(lái)我們來(lái)分析怎樣判斷5個(gè)數(shù)字是不是連續(xù)的。最直觀的是,我們把數(shù)組排序。但值得注意的是,由于0可以當(dāng)成任意數(shù)字,我們可以用0去補(bǔ)滿數(shù)組中的空缺。也就是排序之后的數(shù)組不是連續(xù)的,即相鄰的兩個(gè)數(shù)字相隔若干個(gè)數(shù)字,但如果我們有足夠的0可以補(bǔ)滿這兩個(gè)數(shù)字的空缺,這個(gè)數(shù)組實(shí)際上還是連續(xù)的。舉個(gè)例子,數(shù)組排序之后為{01345}。在13之間空缺了一個(gè)2,剛好我們有一個(gè)0,也就是我們可以它當(dāng)成2去填補(bǔ)這個(gè)空缺。

于是我們需要做三件事情:把數(shù)組排序,統(tǒng)計(jì)數(shù)組中0的個(gè)數(shù),統(tǒng)計(jì)排序之后的數(shù)組相鄰數(shù)字之間的空缺總數(shù)。如果空缺的總數(shù)小于或者等于0的個(gè)數(shù),那么這個(gè)數(shù)組就是連續(xù)的;反之則不連續(xù)。最后,我們還需要注意的是,如果數(shù)組中的非0數(shù)字重復(fù)出現(xiàn),則該數(shù)組不是連續(xù)的。換成撲克牌的描述方式,就是如果一副牌里含有對(duì)子,則不可能是順子。

更好的思路二:
1)確認(rèn)5張牌中除了0,其余數(shù)字沒(méi)有重復(fù)的(可以用表統(tǒng)計(jì)的方法);
2) 滿足這樣的邏輯:(max,min分別代表5張牌中的除0以外的最大值最小值)
       如果沒(méi)有0,則max-min=4,則為順子,否則不是
       如果有一個(gè)0,則max-min=4或者3,則為順子,否則不是
       如果有兩個(gè)0,則max-min=4或者3或者2,則為順子,否則不是

最大值和最小值在1)中就可以獲得,這樣就不用排序了


posted @ 2011-07-12 20:33 simplyzhao 閱讀(659) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/25411174201102642136998/

題目(六):運(yùn)行下列C++代碼,輸出什么?

struct Point3D

{

        int x;

        int y;

        int z;

};

 

int _tmain(int argc, _TCHAR* argv[])

{

        Point3D* pPoint = NULL;

        int offset = (int)(&(pPoint)->z);

 

        printf("%d", offset);

        return 0;

}

答案:輸出8。由于在pPoint->z的前面加上了取地址符號(hào),運(yùn)行到此時(shí)的時(shí)候,會(huì)在pPoint的指針地址上加z在類(lèi)型Point3D中的偏移量8。由于pPoint的地址是0,因此最終offset的值是8

&(pPoint->z)的語(yǔ)意是求pPoint中變量z的地址(pPoint的地址0z的偏移量8),并不需要訪問(wèn)pPoint指向的內(nèi)存。只要不訪問(wèn)非法的內(nèi)存,程序就不會(huì)出錯(cuò)。

題目(七):運(yùn)行下列C++代碼,輸出什么?

class A

{

public:

        A()

        {

                Print();

        }

        virtual void Print()

        {

                printf("A is constructed.\n");

        }

};

 

class B: public A

{

public:

        B()

        {

                Print();

        }

 

        virtual void Print()

        {

                printf("B is constructed.\n");

        }

};

 

int _tmain(int argc, _TCHAR* argv[])

{

        A* pA = new B();

        delete pA;

 

        return 0;

}

答案:先后打印出兩行:A is constructed. B is constructed. 調(diào)用B的構(gòu)造函數(shù)時(shí),先會(huì)調(diào)用B的基類(lèi)及A的構(gòu)造函數(shù)。然后在A的構(gòu)造函數(shù)里調(diào)用Print。由于此時(shí)實(shí)例的類(lèi)型B的部分還沒(méi)有構(gòu)造好,本質(zhì)上它只是A的一個(gè)實(shí)例,他的虛函數(shù)表指針指向的是類(lèi)型A的虛函數(shù)表。因此此時(shí)調(diào)用的PrintA::Print,而不是B::Print。接著調(diào)用類(lèi)型B的構(gòu)造函數(shù),并調(diào)用Print。此時(shí)已經(jīng)開(kāi)始構(gòu)造B,因此此時(shí)調(diào)用的PrintB::Print

同樣是調(diào)用虛擬函數(shù)Print,我們發(fā)現(xiàn)在類(lèi)型A的構(gòu)造函數(shù)中,調(diào)用的是A::Print,在B的構(gòu)造函數(shù)中,調(diào)用的是B::Print。因此虛函數(shù)在構(gòu)造函數(shù)中,已經(jīng)失去了虛函數(shù)的動(dòng)態(tài)綁定特性。



posted @ 2011-06-22 19:41 simplyzhao 閱讀(272) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/254111742010111112236313/

模擬法
#include<stdio.h>
#define MAX_LEN 101

void
print_circle(
int (*mtrx)[MAX_LEN], int leftup_x, int leftup_y, int rightdown_x, int rightdown_y)
{
    
int i, j;
    
if(leftup_x == rightdown_x) {
        
for(j=leftup_y; j<=rightdown_y; j++)
            printf(
"%d\t", mtrx[leftup_x][j]);
        
return;
    }
    
if(leftup_y == rightdown_y) {
        
for(i=leftup_x; i<=rightdown_x; i++)
            printf(
"%d\t", mtrx[i][leftup_y]);
        
return;
    }

    
for(i=leftup_y; i<rightdown_y; i++)
        printf(
"%d\t", mtrx[leftup_x][i]);
    
for(j=leftup_x; j<rightdown_x; j++)
        printf(
"%d\t", mtrx[j][rightdown_y]);
    
for(i=rightdown_y; i>leftup_y; i--)
        printf(
"%d\t", mtrx[rightdown_x][i]);
    
for(j=rightdown_x; j>leftup_x; j--)
        printf(
"%d\t", mtrx[j][leftup_y]);
}

void
solve(
int (*mtrx)[MAX_LEN], int width, int length)
{
    
int lu_x, lu_y, rd_x, rd_y;
    lu_x 
= lu_y = 0;
    rd_x 
= width-1;
    rd_y 
= length-1;
    
while(1) {
        
if(lu_x>rd_x || lu_y>rd_y)
            
break;
        print_circle(mtrx, lu_x, lu_y, rd_x, rd_y);
        
++lu_x;
        
++lu_y;
        
--rd_x;
        
--rd_y;
    }
}

int
main(
int argc, char **argv)
{
    
int i, j, length, width, matrix[MAX_LEN][MAX_LEN];
    scanf(
"%d %d"&width, &length);
    
for(i=0; i<width; i++)
        
for(j=0; j<length; j++)
            scanf(
"%d", matrix[i]+j);

    solve(matrix, width, length);
    
return 0;
}


posted @ 2011-06-17 20:00 simplyzhao 閱讀(316) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/254111742011125100605/

題目:寫(xiě)一個(gè)函數(shù),求兩個(gè)整數(shù)的之和,要求在函數(shù)體內(nèi)不得使用+、-、×、÷。

分析:這又是一道考察發(fā)散思維的很有意思的題目。當(dāng)我們習(xí)以為常的東西被限制使用的時(shí)候,如何突破常規(guī)去思考,就是解決這個(gè)問(wèn)題的關(guān)鍵所在。

看到的這個(gè)題目,我的第一反應(yīng)是傻眼了,四則運(yùn)算都不能用,那還能用什么啊?可是問(wèn)題總是要解決的,只能打開(kāi)思路去思考各種可能性。首先我們可以分析人們是如何做十進(jìn)制的加法的,比如是如何得出5+17=22這個(gè)結(jié)果的。實(shí)際上,我們可以分成三步的:第一步只做各位相加不進(jìn)位,此時(shí)相加的結(jié)果是12(個(gè)位數(shù)57相加不要進(jìn)位是2,十位數(shù)01相加結(jié)果是1);第二步做進(jìn)位,5+7中有進(jìn)位,進(jìn)位的值是10;第三步把前面兩個(gè)結(jié)果加起來(lái),12+10的結(jié)果是22,剛好5+17=22

前面我們就在想,求兩數(shù)之和四則運(yùn)算都不能用,那還能用什么啊?對(duì)呀,還能用什么呢?對(duì)數(shù)字做運(yùn)算,除了四則運(yùn)算之外,也就只剩下位運(yùn)算了。位運(yùn)算是針對(duì)二進(jìn)制的,我們也就以二進(jìn)制再來(lái)分析一下前面的三步走策略對(duì)二進(jìn)制是不是也管用。

5的二進(jìn)制是10117的二進(jìn)制10001。還是試著把計(jì)算分成三步:第一步各位相加但不計(jì)進(jìn)位,得到的結(jié)果是10100(最后一位兩個(gè)數(shù)都是1,相加的結(jié)果是二進(jìn)制的10。這一步不計(jì)進(jìn)位,因此結(jié)果仍然是0);第二步記下進(jìn)位。在這個(gè)例子中只在最后一位相加時(shí)產(chǎn)生一個(gè)進(jìn)位,結(jié)果是二進(jìn)制的10;第三步把前兩步的結(jié)果相加,得到的結(jié)果是10110,正好是22。由此可見(jiàn)三步走的策略對(duì)二進(jìn)制也是管用的。

接下來(lái)我們?cè)囍讯M(jìn)制上的加法用位運(yùn)算來(lái)替代。第一步不考慮進(jìn)位,對(duì)每一位相加。00 11的結(jié)果都00110的結(jié)果都是1。我們可以注意到,這和異或的結(jié)果是一樣的。對(duì)異或而言,0011異或的結(jié)果是0,而0110的異或結(jié)果是1。接著考慮第二步進(jìn)位,對(duì)000110而言,都不會(huì)產(chǎn)生進(jìn)位,只有11時(shí),會(huì)向前產(chǎn)生一個(gè)進(jìn)位。此時(shí)我們可以想象成是兩個(gè)數(shù)先做位與運(yùn)算,然后再向左移動(dòng)一位。只有兩個(gè)數(shù)都是1的時(shí)候,位與得到的結(jié)果是1,其余都是0。第三步把前兩個(gè)步驟的結(jié)果相加。如果我們定義一個(gè)函數(shù)AddWithoutArithmetic,第三步就相當(dāng)于輸入前兩步驟的結(jié)果來(lái)遞歸調(diào)用自己。

#include<stdio.h>

int
tricky_add(
int arg1, int arg2)
{
    
int a, b;
    a 
= arg1 ^ arg2; /* this is the result of arg1+arg2 without carry */
    b 
= arg1 & arg2;
    b 
<<= 1;

    
if(b == 0)
        
return a;
    
else
        
return tricky_add(a, b);
}

int
main(
int argc, char **argv)
{
    
int x, y;
    
while(scanf("%d %d"&x, &y) != EOF) {
        printf(
"%d\n", tricky_add(x, y));
    }

    
return 0;
}



posted @ 2011-06-17 17:30 simplyzhao 閱讀(333) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/25411174200732711051101/

題目:輸入一個(gè)正數(shù)n,輸出所有和為n連續(xù)正數(shù)序列。

例如輸入15,由于1+2+3+4+5=4+5+6=7+8=15,所以輸出3個(gè)連續(xù)序列1-54-67-8

分析:這是網(wǎng)易的一道面試題。

這道題和本面試題系列的第10有些類(lèi)似。我們用兩個(gè)數(shù)smallbig分別表示序列的最小值和最大值。首先把small初始化為1big初始化為2。如果從smallbig的序列的和大于n的話,我們向右移動(dòng)small,相當(dāng)于從序列中去掉較小的數(shù)字。如果從smallbig的序列的和小于n的話,我們向右移動(dòng)big,相當(dāng)于向序列中添加big的下一個(gè)數(shù)字。一直到small等于(1+n)/2,因?yàn)樾蛄兄辽僖袃蓚€(gè)數(shù)字。

基于這個(gè)思路,我們可以寫(xiě)出如下代碼:

void PrintContinuousSequence(int small, int big);

/////////////////////////////////////////////////////////////////////////
// Find continuous sequence, whose sum is n
/////////////////////////////////////////////////////////////////////////
void FindContinuousSequence(int n)
{
      if(n < 3)
            return;

      int small = 1; 
      int big = 2;
      int middle = (1 + n) / 2;
      int sum = small + big;

      while(small < middle)
      {
            // we are lucky and find the sequence
            if(sum == n)
                  PrintContinuousSequence(small, big);

            // if the current sum is greater than n, 
            // move small forward
            while(sum > n)
            {
                  sum -= small;
                  small ++;

                  // we are lucky and find the sequence
                  if(sum == n)
                        PrintContinuousSequence(small, big);
            }

            // move big forward
            big ++;
            sum += big;
      }
}

/////////////////////////////////////////////////////////////////////////
// Print continuous sequence between small and big
/////////////////////////////////////////////////////////////////////////
void PrintContinuousSequence(int small, int big)
{
      for(int i = small; i <= big; ++ i)
            printf("%d ", i);

      printf("\n");
}



posted @ 2011-06-16 19:33 simplyzhao 閱讀(208) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/25411174200731844235261/

題目:一個(gè)臺(tái)階總共有n級(jí),如果一次可以跳1級(jí),也可以跳2級(jí)。求總共有多少總跳法,并分析算法的時(shí)間復(fù)雜度。

分析:這道題最近經(jīng)常出現(xiàn),包括MicroStrategy等比較重視算法的公司都曾先后選用過(guò)個(gè)這道題作為面試題或者筆試題。

首先我們考慮最簡(jiǎn)單的情況。如果只有1級(jí)臺(tái)階,那顯然只有一種跳法。如果有2級(jí)臺(tái)階,那就有兩種跳的方法了:一種是分兩次跳,每次跳1級(jí);另外一種就是一次跳2級(jí)。

現(xiàn)在我們?cè)賮?lái)討論一般情況。我們把n級(jí)臺(tái)階時(shí)的跳法看成是n的函數(shù),記為f(n)。當(dāng)n>2時(shí),第一次跳的時(shí)候就有兩種不同的選擇:一是第一次只跳1級(jí),此時(shí)跳法數(shù)目等于后面剩下的n-1級(jí)臺(tái)階的跳法數(shù)目,即為f(n-1);另外一種選擇是第一次跳2級(jí),此時(shí)跳法數(shù)目等于后面剩下的n-2級(jí)臺(tái)階的跳法數(shù)目,即為f(n-2)。因此n級(jí)臺(tái)階時(shí)的不同跳法的總數(shù)f(n)=f(n-1)+(f-2)

我們把上面的分析用一個(gè)公式總結(jié)如下:

        /  1                          n=1
f(n)=      2                          n=2
        \  f(n-1)+(f-2)               n>2

分析到這里,相信很多人都能看出這就是我們熟悉的Fibonacci序列。



posted @ 2011-06-12 18:19 simplyzhao 閱讀(363) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/2541117420073471124487/

#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

struct Node {
    
char value;
    
struct Node *next;
};

struct Node *
list_reverse(
struct Node *head)
{
    
struct Node *tmp, *cur, *pre = NULL;
    cur 
= head;
    
while(cur) {
        tmp 
= cur->next;
        cur
->next = pre;
        pre 
= cur;
        cur 
= tmp;
    }
    
return pre;
}

struct Node *
list_reverse_recursive(
struct Node *head)
{
    
struct Node *rv;
    
if(head && head->next) {
        rv 
= list_reverse_recursive(head->next);
        head
->next->next = head;
        head
->next = NULL;
        
return rv;
    } 
else 
        
return head;
}

void
test_print(
struct Node *head)
{
    
while(head) {
        printf(
"%c\t", head->value);
        head 
= head->next;
    }
    printf(
"\n");
}

int
main(
int argc, char **argv)
{
    
struct Node d = {'d', NULL};
    
struct Node c = {'c'&d};
    
struct Node b = {'b'&c};
    
struct Node a = {'a'&b};

    test_print(
&a);

    
struct Node *rev_first = list_reverse(&a);

    test_print(rev_first);

    
struct Node *rev_second = list_reverse_recursive(rev_first);

    test_print(rev_second);

    
return 0;
}


posted @ 2011-06-12 16:15 simplyzhao 閱讀(254) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://blog.163.com/prevBlogPerma.do?host=zhedahht&srl=25411174200731139971&mode=prev

#include<stdio.h>
#include
<stdlib.h>

#include
<string.h>
#include
<limits.h>
/*
 * #define INT_MAX 2147483647   
 * #define INT_MIN (-INT_MAX-1) 
 
*/

enum Status {
    Success,
    Fail
};
enum Status ret;
int negative;

int
Str2Int(
const char *input)
{
    
long long num = 0;
    negative 
= 0;
    ret 
= Fail;
    
if(input == NULL)
        
return num;

    
const char *ptr = input;
    
if(*ptr=='+' || *ptr=='-') {
        
if(*ptr == '-')
            negative 
= 1;
        
++ptr;
    }
    
while(*ptr) {
        
if(!(*ptr>='0' && *ptr<='9')) 
            
return num;

        
if((!negative && num>INT_MAX) || (negative && (-num)<INT_MIN)) 
            
return num;

        num 
= num*10 + (*ptr-'0');
        
++ptr;
    }
    ret 
= Success;
    
return num;
}

#define MAX_LEN 101

int
main(
int argc, char **argv)
{
    
int result;
    
char value[MAX_LEN];
    
while(scanf("%s", value) != EOF) {
        result 
= Str2Int(value);
        
if(ret == Success)
            printf(
"%d\n", negative ? (-result) : result);
        
else
            printf(
"Invalid\n");
    }

    
return 0;
}


posted @ 2011-06-10 19:46 simplyzhao 閱讀(247) | 評(píng)論 (0)編輯 收藏
題目來(lái)源:
http://zhedahht.blog.163.com/blog/static/254111742010819104710337/

題目:有一個(gè)復(fù)雜鏈表,其結(jié)點(diǎn)除了有一個(gè)m_pNext指針指向下一個(gè)結(jié)點(diǎn)外,還有一個(gè)m_pSibling指向鏈表中的任一結(jié)點(diǎn)或者NULL。其結(jié)點(diǎn)的C++定義如下:

                struct ComplexNode

{

    int m_nValue;

    ComplexNode* m_pNext;

    ComplexNode* m_pSibling;

};


代碼:
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

struct Node {
    
char value;

    
struct Node *next;
    
struct Node *random;
};

void test_print(struct Node *);

struct Node *
list_copy_with_random_pointer(
struct Node *head)
{
    
struct Node *tmp, *ptr, *ret;

    ptr 
= head;
    
while(ptr != NULL) {
        tmp 
= (struct Node *)malloc(sizeof(struct Node));
        tmp
->value = (ptr->value)-32/* from lowercase to uppercase, just for testing */
        tmp
->next = ptr->next;
        tmp
->random = NULL;

        ptr
->next = tmp;

        ptr 
= ptr->next->next;
    }

    ptr 
= head;
    
while(ptr != NULL) {
        ptr
->next->random = ptr->random==NULL ? NULL : ptr->random->next;

        ptr 
= ptr->next->next;
    }

    ptr 
= head;
    ret 
= (head==NULL ? NULL : (head->next));
    
while(ptr != NULL) {
        tmp 
= ptr->next;
        ptr
->next = ptr->next->next;
        tmp
->next = ptr->next==NULL ? NULL : ptr->next->next;

        ptr 
= ptr->next;
    }

    
return ret;
}

void
test_print(
struct Node *head)
{
    
while(head != NULL) {
        printf(
"%c: [%c, %c]\n", head->value, head->next==NULL?'-':head->next->value, head->random==NULL?'-':head->random->value);

        head 
= head->next;
    }
}

int
main(
int argc, char **argv)
{
    
struct Node d = {'d', NULL, NULL};
    
struct Node c = {'c'&d, NULL};
    
struct Node b = {'b'&c, NULL};
    
struct Node a = {'a'&b, NULL};
    a.random 
= &c;
    d.random 
= &b;

    test_print(
&a);

    
struct Node *copy = list_copy_with_random_pointer(&a);

    printf(
"\n\n");
    test_print(
&a);
    printf(
"\n\n");
    test_print(copy);

    
return 0;
}

posted @ 2011-06-09 11:35 simplyzhao 閱讀(396) | 評(píng)論 (0)編輯 收藏
題目來(lái)源: http://blog.163.com/prevBlogPerma.do?host=zhedahht&srl=2541117420072159363370&mode=prev

題目:輸入一顆二元查找樹(shù),將該樹(shù)轉(zhuǎn)換為它的鏡像,即在轉(zhuǎn)換后的二元查找樹(shù)中,左子樹(shù)的結(jié)點(diǎn)都大于右子樹(shù)的結(jié)點(diǎn)。用遞歸和循環(huán)兩種方法完成樹(shù)的鏡像轉(zhuǎn)換。

例如輸入:

     8
    /  \
  6      10
 /\       /\
5  7    9   11

輸出:

      8
    /  \
  10    6
 /\      /\
11  9  7  5

#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

struct Node {
    
int value;
    
struct Node *left;
    
struct Node *right;
};

void
bst_preorder(
struct Node *root)
{
    
if(root == NULL)
        
return;

    printf(
"%d\t", root->value);
    bst_preorder(root
->left);
    bst_preorder(root
->right);
}

void
bst_mirror_recursive(
struct Node *root) /* easy */
{
    
if(root == NULL)
        
return;

    
struct Node *ptr = root->left;
    root
->left = root->right;
    root
->right = ptr;

    bst_mirror_recursive(root
->left);
    bst_mirror_recursive(root
->right);
}

/* STACK : naive */
#define STACK_SIZE 101
struct Stack {
    
void *data[STACK_SIZE];
    
int top;
};

void
stack_pop(
struct Stack *stack)
{
    
if((stack->top) >= 0)
        
--(stack->top);
}

void *
stack_top(
struct Stack *stack)
{
    
if((stack->top) >= 0)
        
return stack->data[stack->top];

    
return NULL;
}

void
stack_push(
struct Stack *stack, void *entity)
{
    stack
->data[++(stack->top)] = entity;
}

int
stack_isempty(
struct Stack *stack)
{
    
return (stack->top) < 0;
}

void
bst_mirror_nonrecursive(
struct Node *root, struct Stack *aux_stack) /* stack used : good method */
{
    stack_push(aux_stack, root);
    
while(!stack_isempty(aux_stack)) {
        
struct Node *node = (struct Node *)stack_top(aux_stack);

        
struct Node *ptr = node->left;
        node
->left = node->right;
        node
->right = ptr;

        stack_pop(aux_stack);
        
if(node->left)
            stack_push(aux_stack, node
->left);
        
if(node->right)
            stack_push(aux_stack, node
->right);
    }
}

int
main(
int argc, char **argv)
{
    
struct Node a = {5, NULL, NULL};
    
struct Node b = {7, NULL, NULL};
    
struct Node c = {9, NULL, NULL};
    
struct Node d = {11, NULL, NULL};
    
struct Node e = {6&a, &b};
    
struct Node f = {10&c, &d};
    
struct Node g = {8&e, &f};

    bst_preorder(
&g);
    printf(
"\n");
    bst_mirror_recursive(
&g);
    bst_preorder(
&g);
    printf(
"\n");

    bst_mirror_recursive(
&g);
    bst_preorder(
&g);
    printf(
"\n");
    
struct Stack aux = {{0}, -1};
    bst_mirror_nonrecursive(
&g, &aux);
    bst_preorder(
&g);
    printf(
"\n");

    
return 0;
}

 




posted @ 2011-06-01 19:58 simplyzhao 閱讀(197) | 評(píng)論 (0)編輯 收藏
僅列出標(biāo)題
共21頁(yè): First 2 3 4 5 6 7 8 9 10 Last 

導(dǎo)航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆分類(lèi)

隨筆檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机67194精品线观看| 99热免费精品| 国产精品日日摸夜夜摸av| 国产精品男女猛烈高潮激情| 国产精品色婷婷| 国产亚洲福利| 在线观看欧美| 99精品国产一区二区青青牛奶| 99热这里只有成人精品国产| 亚洲一区二区三| 欧美尤物巨大精品爽| 久久亚洲一区| 亚洲电影视频在线| 亚洲美女精品久久| 亚洲免费视频成人| 狂野欧美激情性xxxx欧美| 欧美日韩精品综合| 国产日韩欧美精品在线| 亚洲级视频在线观看免费1级| 亚洲视频免费观看| 久久久久久久综合| 亚洲精品色婷婷福利天堂| 亚洲一区二区三区四区五区黄| 久久精品二区亚洲w码| 欧美激情精品久久久久久大尺度| 欧美视频中文字幕在线| 国产在线欧美| 亚洲九九爱视频| 欧美一区二区在线播放| 欧美电影免费观看网站| 亚洲视频观看| 久久综合久久美利坚合众国| 欧美午夜在线观看| 尤物九九久久国产精品的分类| 中文日韩在线| 媚黑女一区二区| 中国亚洲黄色| 美日韩在线观看| 国产精品亚发布| 亚洲日韩欧美视频一区| 久久超碰97人人做人人爱| 亚洲黄色免费| 欧美中在线观看| 欧美日韩亚洲视频一区| 久久久久久久波多野高潮日日 | 国产亚洲网站| 一道本一区二区| 美女主播一区| 亚洲免费在线精品一区| 欧美xxx在线观看| 国产一区二区高清视频| 9l视频自拍蝌蚪9l视频成人| 久久噜噜亚洲综合| 一本色道久久综合亚洲二区三区| 久久综合九色综合欧美就去吻| 国产精品资源| 一区二区国产日产| 欧美超级免费视 在线| 午夜精品理论片| 国产精品video| 日韩亚洲不卡在线| 欧美大学生性色视频| 欧美影院在线| 国产精品盗摄一区二区三区| 亚洲看片网站| 欧美丰满少妇xxxbbb| 欧美在线精品免播放器视频| 国产精品伦子伦免费视频| 一级成人国产| 亚洲欧洲日本一区二区三区| 麻豆国产精品va在线观看不卡| 国内精品亚洲| 午夜视频一区在线观看| 一区二区三区四区在线| 欧美日韩另类字幕中文| 亚洲久久一区| 亚洲高清av在线| 久久免费观看视频| 国产三级精品三级| 欧美在线一级va免费观看| 中文在线不卡| 欧美日韩一区二区三区免费看| 亚洲乱码精品一二三四区日韩在线| 免费一级欧美片在线播放| 久久国产精品久久久久久| 国产人久久人人人人爽| 欧美一区二区三区精品电影| 亚洲主播在线| 国产精品试看| 欧美一区二区国产| 亚洲欧美自拍偷拍| 国产日产欧美一区| 久久成人免费日本黄色| 午夜激情一区| 国产在线日韩| 猛干欧美女孩| 欧美a级片一区| 日韩视频免费在线观看| 亚洲精品欧美日韩专区| 欧美视频日韩视频| 亚洲欧美在线aaa| 亚洲欧美日韩国产成人精品影院| 国产欧美日韩视频| 久久精品国产99国产精品| 欧美一区二区三区另类 | 亚洲一区美女视频在线观看免费| 国产精品大片| 欧美专区18| 久久久久九九九| 亚洲国产日本| 亚洲精品久久久久久一区二区| 欧美日韩一卡二卡| 欧美一区深夜视频| 欧美在线视频在线播放完整版免费观看| 国产一区91| 欧美大片免费观看| 欧美日韩国产一区二区三区| 亚洲欧美国产另类| 性色av一区二区三区| 一区二区三区在线高清| 欧美国产一区在线| 欧美日韩视频在线一区二区| 香蕉av777xxx色综合一区| 欧美影院一区| 亚洲精品一区二区三区福利| 一区二区冒白浆视频| 国产日韩欧美综合| 欧美高清视频一区二区三区在线观看| 欧美精品色网| 欧美一区二区黄色| 老司机精品久久| 一区二区三区 在线观看视频| 亚洲一区中文字幕在线观看| 亚洲大胆av| av成人手机在线| 国内激情久久| 亚洲黑丝在线| 国产欧美一区二区三区在线老狼 | 亚洲精品久久久久久久久久久久久| 亚洲欧洲在线免费| 国产精品爽黄69| 免费一级欧美在线大片| 欧美视频一区二区三区在线观看 | 欧美电影免费观看高清| 欧美三级电影一区| 久久婷婷亚洲| 欧美三区在线视频| 老**午夜毛片一区二区三区| 欧美日韩国产免费| 久久天堂成人| 国产精品成人国产乱一区| 男人的天堂亚洲| 国产精品蜜臀在线观看| 亚洲大片精品永久免费| 国产精品永久免费在线| 亚洲国产高潮在线观看| 国产亚洲欧美日韩一区二区| 亚洲欧洲精品一区二区| 国语自产在线不卡| 一区二区三区四区五区精品| 亚洲国产精品久久久久秋霞影院| 亚洲一线二线三线久久久| 亚洲毛片av| 久久久久国产精品www| 午夜精品久久久久久久男人的天堂| 毛片av中文字幕一区二区| 欧美在线免费一级片| 欧美连裤袜在线视频| 老鸭窝91久久精品色噜噜导演| 国产精品ⅴa在线观看h| 亚洲第一黄网| 精品99一区二区三区| 亚洲永久免费观看| 一区二区三区日韩| 女人色偷偷aa久久天堂| 久久精品国产99国产精品澳门 | 午夜精品在线看| 欧美裸体一区二区三区| 欧美成人黑人xx视频免费观看| 国产欧美日韩精品在线| 中日韩午夜理伦电影免费| 一本色道久久88亚洲综合88| 老色鬼精品视频在线观看播放| 久久久成人精品| 国产精品综合| 亚洲自拍电影| 亚洲欧美一区二区三区极速播放| 欧美日韩综合| 亚洲美女av电影| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久青草婷婷精品综合日韩| 欧美一区午夜精品| 国产精品护士白丝一区av| 亚洲美女性视频| 夜夜嗨一区二区| 欧美精品18+| 亚洲国产你懂的| 亚洲激情视频网站| 美女尤物久久精品| 欧美电影免费观看大全|