面試題整理 二)

2021-06-09 13:25:09 字數 2250 閱讀 8440

1.把二元查詢樹轉變成排序的雙向鍊錶

題目:輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只調整指標的指向。

10/  \

6    14

/ \  /  \

4 8 12  16

轉換成雙向鍊錶

4=6=8=10=12=14=16。

#include #include struct bstreenode

;typedef bstreenode doublelist;

doublelist * phead;

doublelist * plistindex;

void converttodoublelist(bstreenode * pcurrent);

// 建立二元查詢樹

void addbstreenode(bstreenode * & pcurrent, int value)

else

else if ((pcurrent->m_nvalue) < value)

else

// 節點接到鍊錶尾部

converttodoublelist(pcurrent);

// 右子樹為空

if (null != pcurrent->m_pright)

}// 二叉樹轉換成list

void converttodoublelist(bstreenode * pcurrent)

else

plistindex = pcurrent;

cout定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。

要求函式min、push以及pop的時間複雜度都是o(1)。

#include #include template class cstackwithmin

virtual ~cstackwithmin(void) {}

t& top(void);

const t& top(void) const;

void push(const t& value);

void pop(void);

const t& min(void) const;

private:

dequem_data; // the elements of stack

dequem_minindex; // the indices of minimum elements

};// get the last element of mutable stack

template t& cstackwithmin::top()

// get the last element of non-mutable stack

template const t& cstackwithmin::top() const

// insert an elment at the end of stack

template void cstackwithmin::push(const t& value)

}// erease the element at the end of stack

template void cstackwithmin::pop()

// get the minimum element of stack

template const t& cstackwithmin::min() const

/*3.求子陣列的最大和

題目:輸入乙個整形陣列,陣列裡有正數也有負數。

陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。

求所有子陣列的和的最大值。要求時間複雜度為o(n)。

例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,

因此輸出為該子陣列的和18。*/

//july 2010/10/18

#include int maxsum(int* a, int n)

bool kmin(int k,int*& ret)

else

{ret=new int[k--];

int i;

for(i=0;i<=k;++i)

ret[i]=array[i];

for(int j=(k-1)/2;j>=0;--j)

shiftdown(ret,j,k);

for(;i

python面試題整理(二)

前一篇博文博主總結了10道python面試題,戳這裡可以回看,本文繼續整理python面試題,希望能幫到大家 11.迭代器和生成器的區別 1 迭代器是乙個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string list dict tuple等這類容器物件,使用f...

面試題整理 C (二)

1.類,介面的區別 從定義的角度 類描述乙個實體,包括狀態 屬性和動作 介面定義一類動作,沒有實現,也沒有狀態資訊 從程式的角度 介面是函式宣告 類是函式實現 介面可以有屬性,不能有欄位 乙個子類只能繼承乙個父類,但是可以繼承多個介面 2.介面和抽象類的區別 抽象類是一類事物的高度聚合,介面是定義行...

面試題整理

2014.3.19日整理 1.建立一張表hack 裡面就乙個欄位num,然後用sql語句從1開始插入到100,怎麼寫?oracle 答 1.create tablehack num number 建表語句 2.begin for i in1.100loop insert intohack num v...