数据结构选择题(c语言)
1.若有char w; int x; float y; double z; 則表達(dá)式w*x+z-y值的數(shù)據(jù)類型為( )。
(2分)
A.float
B.char
C.int
D.double
D
解析:
整形和浮點型計算,結(jié)果為浮點型;單精度和雙精度計算,結(jié)果為雙精度
因為在計算這個表達(dá)式時,首先要將各個變量強(qiáng)制轉(zhuǎn)化為最高的存儲類型。相當(dāng)于(double)w*(double)x+(double)z-y,所以是double類型了。
c語言中兩個不同類型的運算,要轉(zhuǎn)化成同類型的,轉(zhuǎn)換從低到高 char–>float–>short–>int–>double。
2.以下關(guān)于數(shù)據(jù)結(jié)構(gòu)的說法中錯誤的是( )。
A.數(shù)據(jù)結(jié)構(gòu)相同,對應(yīng)的存儲結(jié)構(gòu)也相同
B.數(shù)據(jù)結(jié)構(gòu)涉及數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和施加其上的操作3個方面
C.數(shù)據(jù)結(jié)構(gòu)操作的實現(xiàn)與存儲結(jié)構(gòu)有關(guān)
D.定義邏輯結(jié)構(gòu)時可不考慮存儲結(jié)構(gòu)
A
解析:
線性表,可以順序存儲,也可以鏈?zhǔn)酱鎯?#xff0c;但是并沒有改變線性表的邏輯特征
3.以下選項中屬于非線性結(jié)構(gòu)的是( )。
A.廣義表
B.隊列
C.優(yōu)先隊列
D.棧
A
解析:
廣義表(Lists,又稱列表)是一種非連續(xù)性的數(shù)據(jù)結(jié)構(gòu),是線性表的一種推廣。即廣義表中放松對表元素的原子限制,容許它們具有其自身結(jié)構(gòu)
4.若將一棵樹 T 轉(zhuǎn)化為對應(yīng)的二叉樹 BT,則下列對 BT 的遍歷中,其遍歷序列與 T 的后根遍歷序列相同的是:
A.先序遍歷
B.中序遍歷
C.后序遍歷
D.按層遍歷
B
解析:
一棵樹的后根遍歷與這棵樹所對應(yīng)的二叉樹的中序遍歷相同。因為樹轉(zhuǎn)化為二叉樹后是沒有右子樹的,所以最后訪問的是樹的根結(jié)點。
給定一棵樹,可以找到唯一一棵二叉樹與之對應(yīng),同樣,森林也與一棵樹存在一一對應(yīng)關(guān)系。樹與二叉樹,森林與二叉樹的轉(zhuǎn)化(a)(b)(c)為三棵樹,并構(gòu)成一個森林,(d)(e)(f)分別為(a)(b)(c)對應(yīng)的二叉樹,(g)為森林對應(yīng)的二叉樹。
樹結(jié)構(gòu)有兩種次序遍歷樹的方法:
1、先根遍歷:先訪問樹的根節(jié)點,再依次先根遍歷子樹;
2、后根遍歷:先依次后根遍歷子樹,再訪問樹的根節(jié)點。
因為樹并不一定是二叉樹,‘中’的概念不好定義,比如對于一個擁有3個子樹的根節(jié)點來說,根節(jié)點除了先根和后根兩種遍歷方式之外還有另外兩種次序。
如一種次序是先遍歷根節(jié)點的第一棵子樹,再訪問根節(jié)點,之后再依次遍歷剩余子樹,另一種次序是,先遍歷根節(jié)點的前兩棵子樹,再訪問根節(jié)點,最后訪問第三棵子樹。對于擁有更多子樹的根節(jié)點來說,依次遍歷的方法更多。
5.如果A和B都是二叉樹的葉結(jié)點,那么下面判斷中哪個是對的?
A.存在一種二叉樹結(jié)構(gòu),其前序遍歷結(jié)果是…A…B…,而中序遍歷結(jié)果是…B…A…
B.存在一種二叉樹結(jié)構(gòu),其中序遍歷結(jié)果是…A…B…,而后序遍歷結(jié)果是…B…A…
C.存在一種二叉樹結(jié)構(gòu),其前序遍歷結(jié)果是…A…B…,而后序遍歷結(jié)果是…B…A…
D.以上三種都是錯的
D
6.對于一個有N個結(jié)點、K條邊的森林,共有幾棵樹?
A.N?K
B.N?K+1
C.N?K?1
D.不能確定
A
解析:
由一顆樹的性質(zhì):結(jié)點等于邊+1【n= k+ 1】。
等價于 n - k =1。
故共有 n - k 棵樹。
7.在N個結(jié)點的順序表中,算法的時間復(fù)雜度為O(1)的操作是:
A.訪問第i個結(jié)點(1≤i≤N)和求第i個結(jié)點的直接前驅(qū)(2≤i≤N)
B.在第i個結(jié)點后插入一個新結(jié)點(1≤i≤N)
C.刪除第i個結(jié)點(1≤i≤N)
D.將N個結(jié)點從小到大排序
A
8.對于順序存儲的長度為N的線性表,訪問結(jié)點和增加結(jié)點的時間復(fù)雜度為:
A.O(1), O(1)
B.O(1), O(N)
C.O(N), O(1)
D.O(N), O(N)
B
解析:
題目字眼 “ 順序存儲 ” ,說明內(nèi)存單元中分配的存儲空間是連續(xù)的,所 以該線性表為數(shù)組形式存儲,所以數(shù)組訪問時,通過下標(biāo)可隨機(jī)訪問,時間復(fù)雜度為O(1),而增加插入時,需要涉及大量元素的移動,所以時間復(fù)雜度為O(N)。
9.在長度為n的()上,刪除第一個元素,其算法的時間復(fù)雜度為O(n)。
A.只有表頭指針的不帶表頭結(jié)點的循環(huán)單鏈表
B.只有表尾指針的不帶表頭結(jié)點的循環(huán)單鏈表
C.只有表尾指針的帶表頭結(jié)點的循環(huán)單鏈表
D.只有表頭指針的帶表頭結(jié)點的循環(huán)單鏈表
10.如果所有的變量按照下面的程序進(jìn)行定義和聲明,那么在main()函數(shù)中所有可用的變量為 ()。
void fun(int x) {static int y;……return; } int z; void main( ) {int a,b;fun(a);…… }A.x,y
B.x,y,z
C.a,b,z
D.a,b,x,y,z
C
解析:
普通局部變量是再熟悉不過的變量了,在任何一個函數(shù)內(nèi)部定義的變量(不加static修飾符)都屬于這個范疇。編譯器一般不對普通局部變量進(jìn)行初始化,也就是說它的值在初始時是不確定的,除非對其顯式賦值。
普通局部變量存儲于進(jìn)程棧空間,使用完畢會立即釋放。靜態(tài)局部變量使用static修飾符定義,即使在聲明時未賦初值,編譯器也會把它初始化為0。且靜態(tài)局部變量存儲于進(jìn)程的全局?jǐn)?shù)據(jù)區(qū),即使函數(shù)返回,它的值也會保持不變。
變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存空間;編譯器自動對其初始化 其作用域為局部作用域,當(dāng)定義它的函數(shù)結(jié)束時,其作用域隨之結(jié)束總結(jié)
以上是生活随笔為你收集整理的数据结构选择题(c语言)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构基础概念、逻辑结构、物理结构
- 下一篇: 孕妇能吃板蓝根吗