2023年筆試題數(shù)據(jù)結(jié)構(gòu)部分_第1頁(yè)
2023年筆試題數(shù)據(jù)結(jié)構(gòu)部分_第2頁(yè)
2023年筆試題數(shù)據(jù)結(jié)構(gòu)部分_第3頁(yè)
2023年筆試題數(shù)據(jù)結(jié)構(gòu)部分_第4頁(yè)
2023年筆試題數(shù)據(jù)結(jié)構(gòu)部分_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)結(jié)構(gòu)

1.采用折半搜索算法長(zhǎng)度為n的有序表時(shí),元素的平均搜索長(zhǎng)度為()

A)0(n2)

B)O(nlog2n)

C)O(log2n)

D)O(n)

2.下面程序的時(shí)間復(fù)雜度為()

for(inti=0;i<m;i++)

(

for(intj=O;j<n;j++)

(

a[i]U]=i*j;

)

)

A)0(m2);

B)O(n2);

C)O(m*n);

D)O(m+n);

3.下列敘述中,對(duì)的的是()

A)線性表中的個(gè)元素在存儲(chǔ)空間中的位置必須是連續(xù)的

B)線性表中的表頭元素一定存儲(chǔ)在其他元素的前面

C)線性表中的個(gè)元素在存儲(chǔ)空間中的位置不一定是連續(xù)的,但表頭元素一定存儲(chǔ)在其他元素

的前面

D)線性表中的個(gè)元素在存儲(chǔ)空間中的位置不一定是連續(xù)的,且各元素的存儲(chǔ)順序也是任意的

4.已知二叉樹后序遍歷序列是edcfba,中序遍歷序列deacbf,它的前序遍歷序列是();

5.假如進(jìn)棧序列為el,e2,e3,e4,則也許的出棧序列是();

6,對(duì)長(zhǎng)度為n的字符串進(jìn)行字符定位運(yùn)算的時(shí)間復(fù)雜度為();

A)O(l)

B)0(根號(hào)n)

C)O(nlog2n)

D)O(n)

7.n個(gè)頂點(diǎn)的連通圖中邊得條數(shù)至少為()

8.合并兩個(gè)已經(jīng)排好序的長(zhǎng)度為n的Array<int>,最壞情況下需要比較多少次()

A)2n

B)2n-1

C)2n+1

D)n2

9.深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為()

A)32

B)31

C)16

D)15

10.冒泡排序算法和快速排序算法的時(shí)間復(fù)雜度分別是什么?

11.請(qǐng)簡(jiǎn)述數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)及應(yīng)用的場(chǎng)合?

12.下列哪些數(shù)據(jù)結(jié)構(gòu)最適合醫(yī)療儀器設(shè)備中的大型數(shù)據(jù)量的插入,查找()

A)數(shù)組

B)哈希表

C)紅黑樹/二叉平衡樹

D)鏈表

13.下列哪些排序算法的平均時(shí)間復(fù)雜度是。(nlog2n)(),哪些是穩(wěn)定的排序()

A)冒泡排序

B)希爾排序

C)快速排序

D)插入排序

E)堆排序

14.下列口那些說(shuō)法是對(duì)的的:()

A)二分查找法在一個(gè)長(zhǎng)度為1000的有序整數(shù)數(shù)組查找一個(gè)整數(shù),比較的次數(shù)不超過(guò)100次

B)在二叉樹中查找元素的時(shí)間復(fù)雜度為。(Iog2n);

C)對(duì)單向鏈表,可以使用冒泡排序;

D)對(duì)雙向鏈表,可以使用快速排序;

15.已知某二叉樹的后序遍歷是DFBEGCA,中序遍歷的順序是DBFACEG,其前序遍歷順序是

16.下列代碼將兩個(gè)有序鏈表結(jié)合為一個(gè),鏈表中的元素的排列順序?yàn)閺男〉酱蟆U?qǐng)補(bǔ)充其

中的空缺。

structnode

(

structnode*pnext;

intval;

);

structnode*splice(structnode*plhs,structnode*prsh)

(

if()

returnprhs?prhs:plhs;

structnode*phead,*plast;

if()

(

phead=plast=prhs;

plhs=plhs->pnext;

)

else

(

phead=plast=plhs;

prhs=prhs->pnext;

)

while()

{

if(plhs->val<prhs->val)

(

plast->pnext=plhs;

plast=plhs;

plhs=plhs->pnext;

}

else

(

plast->pnext=prhs;

plast=prhs;

prhs=prhs->pnext;

)

)

plast->pnest=;

return;

)

17.比較哈希表和平衡二叉樹的特點(diǎn),他們分別用在哪些場(chǎng)合.

18.一個(gè)棧的入棧序列是A,B,C,D,E則棧的不也許的輸出序列是()

A)EDCBA

B)DECBA

ODCEAB

D)ABCDE

19.在排序的方法中,關(guān)鍵碼比較次數(shù)與記錄地初始排列無(wú)關(guān)的是()

A)Shell

B)歸并排序

Q直接排序

D)選擇排序

20以下反向遍歷array數(shù)組的方法有什么錯(cuò)誤?

vectorarray;

array.push_back(l);

array.push_back(2);

array.push_back(3);

for(vector::size_typei=array.size()-l;i>=O;-i)

(

cout?array[i]?endl;

)

21.某火車站要通過(guò)一條棧道(先進(jìn)后出)來(lái)調(diào)換進(jìn)入車站的列車順序,若進(jìn)站的列車順序

為A,B,C,則下列哪個(gè)出棧順序不也許?

A)ABC

B)ACB

C)CAB

D)CBA

22.棧是一種是自能在某一端插入和刪除的特殊線性表。他按照后進(jìn)先出的原則存儲(chǔ)數(shù)據(jù),

先進(jìn)入的數(shù)據(jù)被壓入棧底,最后進(jìn)入的數(shù)據(jù)在棧頂,

若6元素進(jìn)入棧S的順序?yàn)锳.B.C.D.E.F出棧順序?yàn)锽.D.C.F.E.A,則S棧最小容量為?

A)3B)4C)5D)6

24.若完全二叉樹的結(jié)點(diǎn)個(gè)數(shù)為2的N次方-1,則葉子結(jié)點(diǎn)個(gè)數(shù)為:

A)N-1

B)2*N

C)2(N-1)次方

D)2N次方

25.排序算法是穩(wěn)定是指:關(guān)鍵碼相同的記錄排序前后相應(yīng)位置不發(fā)生改變,下面哪種排序

算法是不穩(wěn)定的?

A)插入排序

B)冒泡排序

C)快速排序

D)歸并排序

26.下列說(shuō)法中錯(cuò)誤的是:

A)插入排序某些情況下復(fù)雜度為0(N)。

B)排序二叉樹元素查找的復(fù)雜度也許為0(N).

C)對(duì)于有序列表的排序最快的是快速排序。

D)在有序列表中通過(guò)二分查找的復(fù)雜度一定是。(nlog2n)。

27.棧和隊(duì)列的共同特點(diǎn)是()

28.棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是()

29.下列關(guān)于棧的敘述對(duì)的的是()

A)棧是非線性結(jié)構(gòu)

B)棧是一種樹狀結(jié)構(gòu)

C)棧具有先進(jìn)先出的特性

D)棧有后進(jìn)先出的特性

30.鏈表不具有的特點(diǎn)是()

A)不必事先估計(jì)存儲(chǔ)空間

B)可隨機(jī)訪問(wèn)任一元素

C)插入刪除不需要移動(dòng)元素

D)所需空間與線性表長(zhǎng)度成正比

31.用鏈表表達(dá)線性表的優(yōu)點(diǎn)是()

32.循環(huán)鏈表的重要優(yōu)點(diǎn)是()

33.線性表L=(al,a2,a3,...ai,........an),下列說(shuō)法對(duì)的的是()

A)每個(gè)元素都有一個(gè)直接前件和直接后件

B)線性表中至少要有一個(gè)元素

C)表中諸元素的排列順序必須是由小到大或由大到小

D)除第一個(gè)和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件

34.線性表若采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)時(shí),規(guī)定內(nèi)存中可用存儲(chǔ)單元的地址()

A)必須是連續(xù)的

B)部分地址必須是連續(xù)的

C)一定是不連續(xù)的

D)連續(xù)不連續(xù)都可以

35.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()

36.在深度為5的滿二叉樹中,結(jié)點(diǎn)的個(gè)數(shù)為()

37.具有3個(gè)結(jié)點(diǎn)的二叉樹有()種形態(tài)

38.設(shè)一棵二叉樹中有3個(gè)葉子結(jié)點(diǎn),有8個(gè)度為1的結(jié)點(diǎn),則該二叉樹中總的結(jié)點(diǎn)數(shù)為()

39.算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成()

40.下列敘述對(duì)的的是()

A)算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無(wú)關(guān)

B)算法的空間復(fù)雜度是指算法程序中指令(或語(yǔ)句)的條數(shù)

C)算法的有窮性是指算法必須能在執(zhí)行有限個(gè)環(huán)節(jié)之后終止

D)算法的時(shí)間復(fù)雜度是指執(zhí)行算法程序所需要的時(shí)間

41.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,重要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)

算,以及()

42.下列敘述中,錯(cuò)誤的是()

A)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)解決的效率密切相關(guān)

B)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)解決的效率無(wú)關(guān)

C)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)在計(jì)算機(jī)中所占的空間不一定是連續(xù)的

D)一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu)

46.根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜限度,一般將數(shù)據(jù)結(jié)構(gòu)分為()

43.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是()

A)線性鏈表

B)棧

C)循環(huán)鏈表

D)順序表

44.下列關(guān)于棧的敘述中對(duì)的的是()

A)在棧中只能插入數(shù)據(jù)

B)在棧中只能刪除數(shù)據(jù)

C)棧是先進(jìn)先出的線性表

D)棧是先進(jìn)后出的線性表

45.應(yīng)用程序在執(zhí)行過(guò)程中,需要通過(guò)打印機(jī)輸出數(shù)據(jù)時(shí),一般先形成一個(gè)打印作業(yè),將其

存放在硬盤中的一個(gè)指定()中,

當(dāng)打印機(jī)空閑時(shí),就會(huì)按先來(lái)先服務(wù)的方式從中取出待打印的作業(yè)進(jìn)行打印。

46.下列關(guān)于隊(duì)列的敘述中對(duì)的的是()

A)在隊(duì)列中只能插入數(shù)據(jù)B)在隊(duì)列中只能刪除數(shù)據(jù)

C)隊(duì)列是先進(jìn)先出的線性表D)隊(duì)列是先進(jìn)后出的線性表

47.有一個(gè)C語(yǔ)言用來(lái)刪除單鏈表的頭元素的函數(shù),請(qǐng)找出其中的問(wèn)題并加以糾正。

voidRemoveHead(node*head)

(

free(head)

head=head->next

48.設(shè)單鏈表中節(jié)點(diǎn)的結(jié)構(gòu)為:

typedefstructnode

(

Elemtypedata;〃數(shù)據(jù)

structnode*Link;//節(jié)點(diǎn)后繼指針

JListnode;

(1)已知指針p所指節(jié)點(diǎn)不是尾節(jié)點(diǎn),若在*p之后插入節(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列哪一個(gè)操作?

A)s->link=p;p->link=s;B)s->link=p->link;p->link=s;

C)s->link=p->link;p=s;D)p->link=s;s->link=p;

(2)非空的循環(huán)單鏈表first的尾節(jié)點(diǎn)(由p所指向)滿足:

A)p->link==NULL;B)p==NULL;

C)p->link==first;D)p==first;

49.如何證明一個(gè)表是循環(huán)鏈表?

52.假如一棵二叉樹節(jié)點(diǎn)的前序序列是A、B、C,后序序列是C、B、A,則該二叉樹節(jié)點(diǎn)的

中序序列是什么?

A)必為ABCB)必為ACBC)必為BCAD)不能擬定

53.什么是平衡二叉樹?

54.下面的程序是一快速排序問(wèn)題,請(qǐng)?zhí)羁铡?/p>

#include<iostream>

#include<stdio.h>

voidimproveqsort(int*list,intrnjntn)

(

int/*

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

printf(”%3d“,list[i]);*/

if(m<n)

(

i=m;j=n+l;k=list[m];

while(i<j)

for(i=i+l,i<n.i++)

if(list[i]>=k)

break;

for(j=j-lj>mzj-)

if(list[j]<=k)

break;

if(i<j)

{t=list[i];list[i]=list[j];list[j]=t;}

}

t=list[m];list[m]=list[j];list[j]=t;

improveqsort();

improveqsort();

)

}

main()

(

intlist[10];

intn=9,m=O,i;

printf("input10number:");

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

printf("\n");

improveqsort(list,m,n);

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

printf("%5d",list[i]);

printf("\n");

55.以下哪種排序?qū)儆诜€(wěn)定排序?

A)歸并排序B)快速排序C)希爾排序D)堆排序

56.用二分法查找一個(gè)長(zhǎng)度為10的、排好序的線性表,查找不成功時(shí),最多需要比較多少次?

A)5B)2C)4D)1

57.下面那種排序法對(duì)1234567最快?

A)quicksortB)bubblesortC)mergesort

58.解釋一下什么是哈夫曼編碼問(wèn)題?

59.假設(shè)執(zhí)行語(yǔ)句Q的時(shí)間是。(1),則執(zhí)行下列程序段的時(shí)間為()

for(inti=l;i<=n;i++)

for(intj=i;j<=n;j++)

Q;

A.O(n)B.O(n2)C.O(n*i)D.0(n+l)

61.一棵有124個(gè)葉結(jié)點(diǎn)的完全二叉樹,最多有()個(gè)結(jié)點(diǎn)

A.247B.248C.249D.250

63.下列排序算法中,在待排序數(shù)據(jù)有序的情況下,花費(fèi)時(shí)間最多的是()

A.快速排序

B.希爾排序

C.冒泡排序

D.堆排序

64.有1000個(gè)無(wú)序的整數(shù),希望使用最快的方式找出前50個(gè)最大的,最佳的選擇是()

A.冒泡排序

B.基數(shù)排序

C.堆排序

D.快速排序

65.下列哪個(gè)不是用來(lái)解決哈希表沖突的開(kāi)放地址法()

A.線性探測(cè)法

B.線性補(bǔ)償探測(cè)法

C.拉鏈探測(cè)法

D.隨機(jī)探測(cè)法

66.假設(shè)把整數(shù)關(guān)鍵碼K散列到有N個(gè)槽的散列表,以下哪些散列函數(shù)是好的散列函數(shù)_

A.h(k)=k/N;

B.h伙)=1;

C.h(k)=kmodN;

D.h(k)=(k+Random(N))modN,random(N)返回一個(gè)0到N-1的整數(shù)

68.下面算法的時(shí)間復(fù)雜度是,

intf(unsignedintn)

if(n==O||n==l)

return1;

elsereturnn*f(n-l);

)

A.O(l)

B.O(n)

C.O(nA2)

D.O(n!)

69.對(duì)于一個(gè)具有n個(gè)頂點(diǎn)的無(wú)向圖,若采用鄰接表表達(dá),則存放表頭節(jié)點(diǎn)的數(shù)組大小為

A.n

B.n+1

C.n-1

D.n+邊數(shù)

70.考慮一個(gè)特殊的hash函數(shù)h,能將任一字符串hash成一個(gè)整數(shù)k,其概率為P(k)=2八(-k)。

k=1,2…。對(duì)一個(gè)位未知大小的字符串集合S中的

每一個(gè)元素取hash值所組成的集合為h(S)。若h(S)中最大的元素maxh(S)=10,那么S的大

小的盼望是

A.5

B.10

C.512

D.1024

71.對(duì)于順序存儲(chǔ)的線性數(shù)組,訪問(wèn)結(jié)點(diǎn)和增長(zhǎng),刪除結(jié)點(diǎn)的時(shí)間復(fù)雜度為一.

A.O(n),O(n)

B.O(n),O(l)

C.O(l),O(n)

D.O(1),O(1)

75.遞歸式的先序遍歷一個(gè)n節(jié)點(diǎn),深度為d的二叉樹,需要??臻g的大小為一.

A.O(n)

B.O(d)

C.O(logn)

D.(nlogn)

76.關(guān)于排序算法的以下說(shuō)法,錯(cuò)誤的是一

A.快速排序的平均時(shí)間復(fù)雜度為O(nlogn),最壞的時(shí)間復(fù)雜度為0(n2)

B.堆排序的平均時(shí)間復(fù)雜度為O(nlogn),最壞的時(shí)間復(fù)雜度為O(nlogn)

C.冒泡排序的平均時(shí)間復(fù)雜度為0(n2),最壞的時(shí)間復(fù)雜度為0(n2)

D.歸并排序的平均時(shí)間復(fù)雜度為。(nlogn),最壞的時(shí)間復(fù)雜度為0(n2)

77.某二叉樹的前序遍歷序列為-+a*b-cd/ef,后序遍歷序列為abcd-*+ef/-,問(wèn)其中序遍歷序

列是一.

78.某緩存系統(tǒng)采用LRU淘汰算法,假定緩存容量為4,并且初始為空,那么在順序訪問(wèn)以

下數(shù)據(jù)項(xiàng)的時(shí)候1,5,1,352,4,1,2出現(xiàn)緩存直接命中的次數(shù)是1最后緩存中即將準(zhǔn)

備淘汰的數(shù)據(jù)項(xiàng)是.

79.有兩個(gè)較長(zhǎng)的單向鏈表a和b,為了找出結(jié)點(diǎn)node滿足nodeina并且nodeinb。請(qǐng)?jiān)O(shè)計(jì)

空間使用盡量小的算法。

80.當(dāng)存儲(chǔ)數(shù)據(jù)量超過(guò)單節(jié)點(diǎn)數(shù)據(jù)管理能力的時(shí)候,可以采用的辦法有數(shù)據(jù)庫(kù)sharding的

解決方案,也就是按照一定規(guī)律把數(shù)據(jù)

分散存儲(chǔ)在多個(gè)數(shù)據(jù)管理結(jié)點(diǎn)N中(節(jié)點(diǎn)編號(hào)為0,1,2…N-1).假設(shè)存儲(chǔ)的數(shù)據(jù)是a,請(qǐng)完畢

為數(shù)據(jù)a計(jì)算存儲(chǔ)節(jié)點(diǎn)的程序。

#defineN5

inthashfintelement){

returnelement*;

}

intshardinglndex(inta){

intp=hash(a);

returnp;

82.具有100個(gè)結(jié)點(diǎn)的二叉樹中,若用二叉鏈表存儲(chǔ),其指針域部分用來(lái)指向結(jié)點(diǎn)的左右孩

子,其余一個(gè)指針域?yàn)榭?/p>

A.50

B.99

C.100

D.1O1

83.請(qǐng)實(shí)現(xiàn)一個(gè)快速排序算法,僅考慮被排序?qū)ο鬄檎麛?shù)的情況。

84.一顆二叉樹高度為h,所有節(jié)點(diǎn)的度或?yàn)?,或?yàn)?,則這顆二叉樹最少有()結(jié)點(diǎn)

A.2h

B.2h-1

C.2h+1

D.h+1

85.在百度或淘寶搜索時(shí),每鍵入字符都會(huì)出現(xiàn)搜索建議,實(shí)現(xiàn)這類技術(shù)后臺(tái)采用的數(shù)據(jù)結(jié)

構(gòu)是.

86.設(shè)哈弗曼樹中的葉子結(jié)點(diǎn)總數(shù)為m,若用二叉鏈表作為存儲(chǔ)結(jié)構(gòu),則該哈弗曼樹中總共

有()個(gè)空指針域:

A.2m-1

B.2m

C.2m+1

D.4m

87.后綴式ab+cd+/可用下面哪個(gè)表達(dá)式來(lái)表達(dá):

A.a+b/c+d

B.a+b/(c+d)

C.a+b+c/d

D.(a+b)/(c+d)

88.給定一個(gè)數(shù)組11315762139194,每次操作可以互換不含反復(fù)數(shù)字的多對(duì)數(shù),求至少

需要多少次操作才干使數(shù)組遞增有序,

比如互換(11,3)(15,7)(6,2)只算一次操作,而互換(11,3).(3,2)算兩次操作

A.6

B.5

C.2

D.3

89.寫一個(gè)函數(shù),去除一個(gè)字符串中的所有反復(fù)字符,規(guī)定在原字符串上進(jìn)行操作,不可以

使用庫(kù)函數(shù),空間復(fù)雜度。(1)。

例如:輸入字符串為”aabbbca“,則去重后的字符串為“abc“

90.如何判斷一個(gè)二叉樹是不是對(duì)稱二叉樹。(對(duì)稱必須是左右子樹對(duì)稱,且相應(yīng)節(jié)點(diǎn)的值也

相同)

91.某個(gè)車站呈狹長(zhǎng)型,寬度只能容下一臺(tái)車,并且只有一個(gè)出入口,已知某時(shí)刻該車站狀

態(tài)為空,從這一時(shí)刻開(kāi)始的出入記錄為:

“進(jìn),出,進(jìn),進(jìn),進(jìn),出,出,進(jìn),進(jìn),進(jìn),出,出”假設(shè)該車輛入棧的順序?yàn)?,2,3……,

則車輛的出棧順序?yàn)?)

A.1,2,3,4,5

B.1,2,4,5,7

C.1,4,3,7,6

D.1,4,3,7,2

92.將數(shù)組{8,23,4,16,77,-5,53,100}中的元素按從小到大的順序排列,每次可以互換任意兩個(gè)

元素,最少需要互換()次

A.4

B.5

C.6

D.7

94.完全二叉樹和滿二叉樹的聯(lián)系和區(qū)別?

95似下序列中不符合堆定義的是()

A.(102,87,100,79,82,62,84,42,22,12,68)

B.(102,100,87,84,82,79,68,62,42,22,12)

C.(12,22,42,62,68,79,82,84,87,100,102)

D.(102,87,42,79,82,62,68,100,84,12,22)

96.使用cache命中率最高的替換算法是()

A.先進(jìn)先出算法FIFO

B.隨機(jī)算法RAND

C.先進(jìn)后出算法FIL。

D.替換最近最少使用的塊算法LRU

97.快速排序最壞情況下的時(shí)間復(fù)雜度是:()

A.0(nlog(n))

B.0(n2)

C.O(log(n))

D.0(n)

98.一個(gè)文本文獻(xiàn),大約有10000行,每行一個(gè)詞,規(guī)定記錄出其中最頻繁出現(xiàn)的前十個(gè)詞

(Ie表達(dá)單詞的平均長(zhǎng)度),給出時(shí)間復(fù)雜度分析。()

A.max(O(n*le),O(n*lgl0))

B.min(O(n*le),O(n*lgl0))

C.O(n*le)

D.O(n*lglO)

99.關(guān)于數(shù)據(jù)結(jié)構(gòu)和算法,以下說(shuō)法對(duì)的的是()

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與所使用的計(jì)算機(jī)無(wú)關(guān)

B.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)解決的效率密切相關(guān)

C.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)在計(jì)算機(jī)中所占的空間不一定是連續(xù)的

D.一種數(shù)據(jù)的邏輯結(jié)構(gòu)只相應(yīng)一種存儲(chǔ)結(jié)構(gòu)

E,算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無(wú)關(guān)

F.算法的時(shí)間復(fù)雜度是指執(zhí)行算法程序所需要的時(shí)間

G.在單鏈表中,只要指出表中任何一個(gè)節(jié)點(diǎn)的位置,就可以從他出發(fā)依次訪問(wèn)到鏈表中其

他所有節(jié)點(diǎn)

H.在一個(gè)單鏈表中,已知q所指結(jié)點(diǎn)是p所指節(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn),若在p和q之間插入結(jié)點(diǎn)

s,貝!I執(zhí)行,s->next=p;q->next=s;

I.在一個(gè)單鏈表中,若刪除p所指節(jié)點(diǎn)的后續(xù)結(jié)點(diǎn),則執(zhí)行p=p->next;p->next=p->next->next

J.使用鏈表,可隨機(jī)訪問(wèn)鏈表中的任何一個(gè)元素

100.調(diào)用printf函數(shù)可以分解為九個(gè)過(guò)程,請(qǐng)寫出他們的排列順序.

A.call指令

B.EBP出棧

C.函數(shù)參數(shù)壓棧

D.收回局部變量空間

E.EBP壓棧

F.在棧上保存局部變量

G.函數(shù)參數(shù)出棧

H.ret指令

I.打印輸出字符串

102.在以下幾種數(shù)據(jù)結(jié)構(gòu)中,在執(zhí)行數(shù)量相稱的查找,刪除和插入操作時(shí),綜合性能最佳的

數(shù)據(jù)結(jié)構(gòu)是:

A.雙向鏈表

B.分塊鏈表

C.穿線二叉樹

D.堆

103.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個(gè)區(qū)間,并標(biāo)記了地理位置信

息,區(qū)間之間無(wú)重疊,用二分查找將IP地址映射到地理位置信息,

請(qǐng)問(wèn)在最壞的情況下,需要查找多少步?

A.17

B.18

C.19

D.20

104.以入棧順序作為輸入,出棧作為輸出,并以I代表入棧,。代表出棧,現(xiàn)將1,2,3,4順序

入棧,則棧操作序列IIIIOOOO后,輸出4321;與輸出1234相相應(yīng)

的棧操作序列為I0I0I0Q則若想得到輸出為2314,則棧操作序列應(yīng)為—.無(wú)法由棧操作序

列而得到的輸出有。

105.設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則根據(jù)這些初始關(guān)鍵字序列建成

的初始堆為.

106.線性有序表(al,a2,a3j”.a256)是從小到大排列的,對(duì)一個(gè)給定的值k,用二分法檢索

表中與K相等的元素,在查找不成功的情況下,最多需要檢索次。

編程

1單鏈表

1:編程實(shí)現(xiàn)一個(gè)單鏈表的建立。

2:編程實(shí)現(xiàn)一個(gè)單鏈表的側(cè)長(zhǎng)。

3:編程實(shí)現(xiàn)一個(gè)單鏈表的打印。

4:編程實(shí)現(xiàn)一個(gè)單鏈表刪除節(jié)點(diǎn)。

5:編程實(shí)現(xiàn)單鏈表的插入。

6:編程實(shí)現(xiàn)單鏈表的逆置。

2雙鏈表

1:編程實(shí)現(xiàn)雙鏈表的建立。

2:編程實(shí)現(xiàn)雙鏈表的側(cè)長(zhǎng)。

3:編程實(shí)現(xiàn)雙鏈表的打印。

4:編程實(shí)現(xiàn)雙鏈表刪除節(jié)點(diǎn)。

5:編程實(shí)現(xiàn)雙鏈表的插入。

1:編程實(shí)現(xiàn)隊(duì)列的入隊(duì)。

2:編程實(shí)現(xiàn)隊(duì)列的出隊(duì)。

3:編程實(shí)現(xiàn)隊(duì)列的側(cè)長(zhǎng)。

4:編程實(shí)現(xiàn)隊(duì)列的打印。

1.一個(gè)學(xué)生的信息:姓名,學(xué)號(hào),性別,年齡等信息,用一個(gè)鏈表,把這些學(xué)生信息連在

一起,給出一個(gè)age,在這些鏈表中刪除學(xué)生年齡等于age的學(xué)生信息。

2.請(qǐng)用C或C++寫出一個(gè)冒泡排序程序,規(guī)定輸入10個(gè)整數(shù),輸出排序結(jié)果。

3.請(qǐng)用C或C++寫出一個(gè)shell排序程序,規(guī)定輸入10個(gè)整數(shù),輸出排序結(jié)果。

4.鏈表

structstudent

(

intm_Num;〃學(xué)號(hào)

doublem_dScore;〃分?jǐn)?shù)

structstudent*m_pNext;〃下一個(gè)

1).構(gòu)造一個(gè)有20名學(xué)生的單向鏈表。按順序每名學(xué)生的分?jǐn)?shù)值為,1,2,3,5,8,13…

2).求出他們的平均分。

5.請(qǐng)實(shí)現(xiàn)一個(gè)快速排序的算法。僅考慮排序的對(duì)象為整數(shù)的情況。

6.計(jì)算a的n次方是許多加密算法的基本操作,蠻力計(jì)算方法的時(shí)間復(fù)雜度是O(n),請(qǐng)?jiān)O(shè)

計(jì)一個(gè)時(shí)間復(fù)雜度小于O(n)的算法,(假設(shè)計(jì)算結(jié)果可以使用long型存儲(chǔ))

7.給定一個(gè)數(shù)組a[n],我們希望構(gòu)造數(shù)組b[n],其中b[i]=a[0]*a[l]...a[n-l]/a[i].在構(gòu)造過(guò)程

不允許使用除法。

1.規(guī)定0(1)空間復(fù)雜度和0(n)時(shí)間復(fù)雜度。

2.除遍歷計(jì)數(shù)器與a[n]b[n]外,不可使用新的變量(涉及棧臨時(shí)變量,堆空間和全局靜態(tài)變

量等);

8.給定一個(gè)如下輸入格式的字符串,(1,(2,3),(4,(5,6),7))括號(hào)內(nèi)的元素可以是數(shù)字,

也可以是另一個(gè)括號(hào)。請(qǐng)實(shí)現(xiàn)一個(gè)算法消除嵌套的括號(hào),

比如把上面的表達(dá)式變成:(123,4,5,6,7),假如表達(dá)式有誤請(qǐng)報(bào)錯(cuò)。

9.相似度計(jì)算用于衡量對(duì)象之間的相似限度,在數(shù)據(jù)挖掘,自然語(yǔ)言解決中是一個(gè)基礎(chǔ)性計(jì)

算。在廣告檢索服務(wù)中往往也會(huì)判斷網(wǎng)民檢索Query和廣告Adword的

主題相似度。假設(shè)Query或者Adword的主題屬性定義為一個(gè)長(zhǎng)度為10000的浮點(diǎn)數(shù)組

Pr[10000](稱之為主題概率數(shù)組),其中Pr[i]表達(dá)Query或者Adword屬于主

題ID為i的概率,而Query和Adword的相似度簡(jiǎn)化定義為兩者主題概率數(shù)組的內(nèi)積:即

sim(Query,Adword)=sum(QueryPr[i]*AdwordPr[i])(0<=i<=10000)?在

實(shí)際應(yīng)用場(chǎng)景中,由于大多數(shù)主題概率都為0,所以主題概率數(shù)組往往比較稀疏,在實(shí)現(xiàn)時(shí)

會(huì)以一個(gè)緊湊型數(shù)組topic_info_t0的方式保存,其中100<=數(shù)組大小

<=1000,并按照topicjd遞增排列,0<=topic_id<10000,0<topic_pr<l?

structtopic_info_t

(

inttopicjd;

floattopic_pr;

);

現(xiàn)在給出Query的topicjnfo_t數(shù)組和N(N>=5000)個(gè)Adwords的topic_info_t數(shù)組,現(xiàn)規(guī)

定出與的相似度最大值。即

QueryAdwordsmax(sim(Query;Adword[i]))

(0<=i<N).

floatmax_sim(constvector<topic_info_t>&query_topic_info,

constvector<topic_info_t>adwords_topic_info[],

intadwords_number);

編寫代碼求時(shí)間復(fù)雜度最低的算法,并給出時(shí)間復(fù)雜度分析。

10.給一個(gè)單詞a,假如通過(guò)互換單詞中字母的順序可以得到此外的單詞b,那么b是a的

兄弟單詞,比如單詞army和mary互為兄弟單詞。

現(xiàn)在要給出一種解決方案,對(duì)于用戶輸入的單詞,根據(jù)給定的字典找出輸入單詞有哪些兄弟

單詞。請(qǐng)具體說(shuō)明數(shù)據(jù)結(jié)構(gòu)和查詢流程,規(guī)定期間和空間效率盡也許

的高?

11.系統(tǒng)中維護(hù)了若干數(shù)據(jù)項(xiàng),我們對(duì)數(shù)據(jù)項(xiàng)的分類可以分為三級(jí),一方面我們按照一級(jí)

分類方法將數(shù)據(jù)項(xiàng)分為A,B,C……若干類別,每一個(gè)級(jí)分類方法產(chǎn)生的類

別又可以按照二級(jí)分類方法分為a,b,c…若干子類別,同樣,二級(jí)分類方法產(chǎn)生的類別又可

按照三級(jí)分類方法分為i,ii,iii…若干子類別,每個(gè)三級(jí)分類方法產(chǎn)生

的子類別中的數(shù)據(jù)項(xiàng)從1開(kāi)始的編號(hào)。我們需要對(duì)每個(gè)數(shù)據(jù)項(xiàng)輸出日記,日記的形式是

key-valueo寫入日記的時(shí)候,用戶提供三級(jí)類別名稱,數(shù)據(jù)項(xiàng)編號(hào)和日

志的key,共五個(gè)key值,例如write(A,a,i,l,keyl),獲取日記的時(shí)候,用戶提供三級(jí)類別名

稱,數(shù)據(jù)項(xiàng)編號(hào),共四個(gè)key值,返回相應(yīng)的所有key-value,

例如get_log(A,a,i,l),請(qǐng)描述一種數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這些日記,并計(jì)算出寫入日記和讀出日記

的時(shí)間復(fù)雜度?

12.鏈表

structstudent

{

intm_Num;〃學(xué)號(hào)

doublem_dScore;〃分?jǐn)?shù)

structstudent*m_pNext;〃下一個(gè)

};

1)構(gòu)造一個(gè)有20名學(xué)生的單向鏈表。按順序每名學(xué)生的分?jǐn)?shù)值為1,1,2,3,5,8,13…

2)求出他們的平均分

13眉泡排序(寫出具體算法):答題需注意程序的有效性,可行性,健壯性并體現(xiàn)嚴(yán)格,規(guī)

范的過(guò)程。

14.單鏈表反序(寫出具體算法):答題需注意程序的有效性,可行性,健壯性并體現(xiàn)嚴(yán)格,

規(guī)范的過(guò)程。

15.請(qǐng)寫一個(gè)函數(shù),功能是把一段字符串倒序:答題需注意程序的有效性,可行性,健壯性

并體現(xiàn)嚴(yán)格,規(guī)范的過(guò)程。

16.設(shè)計(jì)一個(gè)算法,把一個(gè)具有N個(gè)元素的數(shù)組循環(huán)右移K位,規(guī)定期間復(fù)雜度為O(N),

空間復(fù)雜度為O(l)o

17.一個(gè)單向鏈表,不知道頭結(jié)點(diǎn),一個(gè)指針指向其中一個(gè)節(jié)點(diǎn),問(wèn)如何刪除這個(gè)指針指向

的結(jié)點(diǎn).

18.編程得到以下算式的結(jié)果(規(guī)定計(jì)算的效率最高)

算式:1-2+3-4+5-6......N

19.請(qǐng)寫出一個(gè)程序,把一段字符串里面的某個(gè)字符(也許出現(xiàn)幾次)過(guò)濾掉,比如“abcdefg”

過(guò)濾掉e變成"abcdfg”。

規(guī)定算法復(fù)雜度。(n),空間復(fù)雜度。⑴(10)。

20.編寫一個(gè)按單詞反轉(zhuǎn)字符串的函數(shù),如給定輸入hereis.com后變成.comishere

21.列出你知道的排序算法,并使用其中的任意一種排序算法實(shí)現(xiàn)int*sort(intarray[],int

length),array是一個(gè)待排整形數(shù)組,length是數(shù)組長(zhǎng)度,

將排序結(jié)果以整型指針的形式輸出。

22.編寫一個(gè)函數(shù),計(jì)算兩個(gè)正整數(shù)的最小公倍數(shù),規(guī)定用輾轉(zhuǎn)相除法。

23.已知兩個(gè)鏈表Listl和List2,均為增序,請(qǐng)把他們合并成一個(gè)鏈表,規(guī)定仍為增序,請(qǐng)

用遞歸實(shí)現(xiàn)。

24.編程求10000以內(nèi)的素?cái)?shù),規(guī)定對(duì)算法進(jìn)行適當(dāng)優(yōu)化。

25.(八皇后問(wèn)題)在一個(gè)8*8的國(guó)際象棋棋盤上擺放八個(gè)皇后,使其不能互相襲擊,即任

意兩個(gè)皇后都不能處在同一行,同一列或同一斜線上。

請(qǐng)編程求出所有可行的擺法,規(guī)定用回溯法寫出程序。

26.給定一個(gè)單鏈表和一個(gè)整數(shù)K,規(guī)定每隔K個(gè)元素翻轉(zhuǎn)鏈表:

structnode

intkey;

structnode*next;

};

typedefnode*List;

實(shí)現(xiàn)該函數(shù):int*kReverse(List*Head,intk)

比如:原始鏈表為:l->2->3->4->5->6

k=2翻轉(zhuǎn)為:2->1->4->3->6->5

k=3翻轉(zhuǎn)為:3->2->1->6->5->4

k=4翻轉(zhuǎn)為:4->3->2->1->5->6

27.對(duì)于一個(gè)m*n的int矩陣,其每行自左向右是升序排列的,其每列自上向下是升序排列

的,現(xiàn)需要在其中查找整數(shù)elem,找屆時(shí)返回elem所在位置。

請(qǐng)1)先寫出思緒;2)自行定義函數(shù)接口然后編程實(shí)現(xiàn),編程語(yǔ)言不限。

28.下面程序段的時(shí)間復(fù)雜度為()

for(inti=O;i<m;i++)

for(intj=0;j<n;j++)

(

a[i]U]=i*j;

)

)

A.O(mA2)

B.O(nA2)

C.O(m*n)

D.O(m+n)

29.一個(gè)單向鏈表,不知道頭結(jié)點(diǎn),現(xiàn)在有一個(gè)指針指向其中一個(gè)節(jié)點(diǎn),問(wèn)如何從鏈表中刪

除這個(gè)指針指向的節(jié)點(diǎn)?例如:?jiǎn)蜗蜴湵鞮(1->2->3->4->5),

現(xiàn)有指針P指向節(jié)點(diǎn)3,現(xiàn)在要?jiǎng)h除節(jié)點(diǎn)3,把鏈表L變成(1->2->4->5)

30.已知一顆二叉樹的中序序列和后序序列分別為BDCEAFHG和DECBHGFA,畫出這顆二叉

樹.

31.給定一個(gè)沒(méi)有反復(fù)數(shù)據(jù)的整數(shù)數(shù)組,找出其中所有兩個(gè)數(shù)相加之和等于2023的整數(shù)對(duì),

并且打印出來(lái)。(請(qǐng)寫出你的思緒,然后用代碼實(shí)現(xiàn)出來(lái))

32.已知兩個(gè)集合A[5,2,7,4,3,9,9]B[5,3,1,9,2,6,2],寫一段代碼順序打

印出這兩個(gè)集合中反復(fù)的元素。嘗試使你的代碼時(shí)間復(fù)雜度最優(yōu),

請(qǐng)?jiān)诖a之前寫出你的思緒。

33.己知字母順序是[d,g,c,f,b,e,a]請(qǐng)對(duì)輸入的一組字符串input[3]={"dca”,“dfa”,

“cgd”},按照字母順序進(jìn)行排序并打印,本例的輸出為:

1:dca

2:dfa

3:cgd

如何檢測(cè)上述代碼是達(dá)成質(zhì)量標(biāo)準(zhǔn)的?

34.createafunctionforstringpadstart(Stringstring,intminlength,charpadChar);

returnastring,oflengthatleastminlength,consistingofstringprependedwithasmanycopies

ofpadCharasarenecessarytoreach

thatlength.

forexample:

padStart("7〃3'0')returns"007”

padStart(z/2023,:3/0,)returns//2023,/

35.有一個(gè)數(shù)組,里面由若干整數(shù)組成,除了一個(gè)整數(shù)外,其他都出現(xiàn)兩次,如何快速找到

這個(gè)整數(shù)。例如:[1,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論