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...