code
1、反轉乙個鍊錶。迴圈演算法。
list reverse(list l)
return
tmp; } 2
、反轉乙個鍊錶。遞迴演算法。
list resverse(list l)
return
n; }
3、廣度優先遍歷二叉樹。
void
bst(tree t)
} class
node
class
queue
else }
public
tree deque()
else }
4、輸出乙個字串所有排列。注意有重複字元。
char
p; void
perm(
char
s, int
i, int
n)else
s[j]
=p[i];
} }
} void
main()
5、輸入乙個字串,輸出長型整數。
long
atol(
char
*str)
while
(isdigit(
*p)) if(
!p)
returnm*
l; else
return
error; } 6
、判斷乙個鍊錶是否有迴圈。
intisloop(list l)
if(
!s)
return-1
; else
reutrn 1;
} int
isloop(list l)
if(p
=l)
return1;
return0;
} 實際上,在我的面試過程中,還問到了不破壞結構的其他演算法。
我的答案是從煉表頭開始遍歷,如果節點next指標指向自身,則迴圈存在;否則將next指標指向自身,遍歷下乙個節點。直至next指標為空,此時鍊錶無迴圈。
不是隨便兩個步長不同的指標都會在迴圈鍊錶上相遇。乙個充分條件是,兩個遍歷指標步長相差1。最好是1,2這兩個步長,這樣就可以進而求出迴圈的位置和鍊錶的大小。
7、反轉乙個字串。
void
reverse(
char
*str) } 8
、實現strstr函式。
intstrstr(
char
str,
char
par)
else }
if(!str[j])
returni-
strlen(par);
else
return-1
; }
9、實現strcmp函式。
intstrcmp(
char
*str1,
char
*str2)
return
*str1
-*str2;
} 10
、求整形中二進位制1的位數
求乙個整形中1的位數。
intf(
intx)
return
n; }
11、漢諾塔問題。
void
tower(n,x,y,z)
} 12
、漢諾塔最小步數
三柱漢諾塔最小步數。
intf3(n)
f3[n] =2
*f3(n -1
) +1;
return
f3[n];
} }
四柱漢諾塔最小步數。
intf4(n)
min=2*
f4(1)+
f3(n-1
); for
(inti=
2;i<
n;++
i) f4[n]
=min;
return
min;
} else
return
f4[n];
} 13
、在乙個鍊錶中刪除另乙個鍊錶中的元素。
void
delete(list m, list n)
else
if(a.value
>
b.value)
else }
m=head.next;
} 14
、乙個陣列,下標從0到n,元素為從0到n的整數。判斷其中是否有重複元素。
inthasduplicate(
int a,
intn)
if(a[i]
==i)
} return0;
} 15
、判斷一顆二叉樹是否平衡。
intisb(tree t)
16、返回一顆二叉樹的深度。
intdepth(tree t)
} 17
、兩個鍊錶,一公升一降。合併為乙個公升序鍊錶。
list merge(list a, list d)
else p
=p.next;
} if
(a) p.next
=a;
elseif(a1) p.next
=a1;
return
q.next;
} 不知道這道題朋友們有什麼更好的方法?
鍊錶逆序本來就是o(n),所以這道題再爛的做法也不會超過o(n)。我覺得先逆序再歸併不會比設計乙個個巧妙的方法一次組成目標鍊錶慢多少的
18、將長型轉換為字串。
char
*ltoa(
long
l) char
*str=(
char
*)malloc(n
*sizeof
(char
));
intj=0
; while
(l)
return
str;
} 19
、用乙個資料結構實現
if(x ==0
) y
=a;
elsey =
b; j =;
y=j[x];
20、在雙向鍊錶中刪除指定元素。
void
del(list head, list node) if(
!cur)
return
; list post
=cur.next;
pre.next
=cur.next;
post.last
=cur.last;
return
; }
21、不重複地輸出公升序陣列中的元素。
void
outputunique(
char
str,
intn)
++j;
} }
} 22
、面試過程中我還遇到了下面幾題:
1、如何刪除鍊錶的倒數第m的元素?我的方法是先用pre指標從煉表頭開始步進m,新建pst節點next指標指向頭節點,cur指標指向頭節點,然後pre,cur,post三個指標一起步進,當pre指向鍊錶結尾的時候cur指向倒數第m個元素,最後利用pst指標刪除cur指向元素。
2、如何判斷乙個字串是對稱的?如a,aa,aba。設定頭尾指標同時向中間比較靠齊直至相遇。
3、如何利用2函式找出乙個字串中的所有對稱子串?以子串頭指標和尾指標為迴圈變數設定兩個巢狀的迴圈以找出所有子串,對每個子串應用2函式。
讀書 《一口氣讀完世界歷史》
一口氣讀完世界歷史 出版 海南出版社 出版日期 2004 5 定價 元 看點 這是你不曾看過的 世界歷史 本書特點 簡短,不足 頁 新鮮,不是教科書式的講述。該書選取了人類初始直至 的漫長世界歷史程序中那些對人類社會發展具有重大影響的人物和事件,以講故事的方式娓娓敘來,並配有大量插圖。附兩則書評 僅...
git 一口氣帶你走完git之旅
1 git是目前世界上最先進的分布式版本控制系統。svn是整合式版本控制系統,那麼問題來了,什麼叫分布式管理和集中式管理?首先,svn 需要有乙個 伺服器,協同開發者需要同 伺服器連線,所有的版本都存在了 伺服器上。開發者只有本地 一旦 伺服器掛掉,所有版本會丟失。git採用分布式版本控制。也就是每...
學習筆記之一口氣讀懂經濟學
一口氣讀懂經濟學 豆瓣 入門篇 開啟你的經濟學之旅 人是利己且具有理性的嗎 理性經濟人 撥開伊拉克戰爭的迷霧 稀缺性 還有什麼物品不能用於買賣 商品 鄭州理髮店收費1.2萬元的背後 價值與 我們購買的究竟是什麼 使用價值 經濟學的永恆話題 需求與供給 用石頭也可以買東西 貨幣 皮洛士的勝利 成本 進...