數據結構試題集(包含答案-完整版)_第1頁
數據結構試題集(包含答案-完整版)_第2頁
數據結構試題集(包含答案-完整版)_第3頁
數據結構試題集(包含答案-完整版)_第4頁
數據結構試題集(包含答案-完整版)_第5頁
已閱讀5頁,還剩48頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 概論一、選擇題1、研究數據結構就是研究( D )。A. 數據的邏輯結構 B. 數據的存儲結構 C. 數據的邏輯結構和存儲結構 D. 數據的邏輯結構、存儲結構及其基本操作2、算法分析的兩個主要方面是( A )。A. 空間復雜度和時間復雜度B. 正確性和簡單性C. 可讀性和文檔性 D. 數據復雜性和程序復雜性3、具有線性結構的數據結構是( D )。A. 圖 B. 樹C. 廣義表 D. 棧4、計算機中的算法指的是解決某一個問題的有限運算序列,它必須具備輸入、輸出、( B )等5個特性。A. 可執行性、可移植性和可擴充性B. 可執行性、有窮性和確定性C. 確定性、有窮性和穩定性 D. 易讀性、

2、穩定性和確定性5、下面程序段的時間復雜度是( C )。for(i=0;im;i+)for(j=0;jn;j+)aij=i*j;A. O(m2)B. O(n2)C. O(m*n)D. O(m+n)6、算法是( D )。A. 計算機程序 B. 解決問題的計算方法C. 排序算法 D. 解決問題的有限運算序列7、某算法的語句執行頻度為(3n+nlog2n+n2+8),其時間復雜度表示( C )。A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n)8、下面程序段的時間復雜度為( C )。i=1;while(i=n)i=i*3;A. O(n)B. O(3n)C. O(log3

3、n) D. O(n3)9、數據結構是一門研究非數值計算的程序設計問題中計算機的數據元素以及它們之間的( )和運算等的學科。A. 結構B. 關系C. 運算D. 算法10、下面程序段的時間復雜度是(A )。i=s=0;while(s=(y+1)*(y+1)y=y+1;A. O(n) B. C.O(1) D. O(n2)二、填空題1、程序段“i=1;while(inext=head B. p-next=NULL C. p=NULL D. p=head6、鏈表不具有的特點是( )。A. 可隨機訪問任一元素B. 插入刪除不需要移動元素C. 不必事先估計存儲空間D. 所需空間與線性表長度成正比7、在雙向循

4、環鏈表中,在p指針所指的結點后插入一個指針q所指向的新結點,修改指針的操作是( )。A. p-next=q;q-prior=p;p-next-prior=q;q-next=q;B. p-next=q;p-next-prior=q;q-prior=p;q-next=p-next;C. q-prior=p;q-next=p-next;p-next-prior=q;p-next=q;D. q-next=p-next;q-prior=p;p-next=q;p-next=q;8、線性表采用鏈式存儲時,結點的存儲地址( )。A. 必須是連續的B. 必須是不連續的C. 連續與否均可 D. 和頭結點的存儲地址

5、相連續9、在一個長度為n的順序表中刪除第i個元素,需要向前移動( )個元素。A. n-i B. n-i+1C. n-i-1 D. i+110、線性表是n個( )的有限序列。A. 表元素B. 字符C. 數據元素D. 數據項11、從表中任一結點出發,都能掃描整個表的是( )。A. 單鏈表 B. 順序表C. 循環鏈表 D. 靜態鏈表12、在具有n個結點的單鏈表上查找值為x的元素時,其時間復雜度為( )。A. O(n) B. O(1) C. O(n2) D. O(n-1)13、線性表L=(a1,a2,an),下列說法正確的是( )。A. 每個元素都有一個直接前驅和一個直接后繼 B. 線性表中至少要有一

6、個元素C. 表中諸元素的排列順序必須是由小到大或由大到小D. 除第一個和最后一個元素外,其余每個元素都由一個且僅有一個直接前驅和直接后繼14、一個順序表的第一個元素的存儲地址是90,每個元素的長度為2,則第6個元素的存儲地址是( )。A. 98 B. 100C. 102 D. 10615、在線性表的下列存儲結構中,讀取元素花費的時間最少的是( )。 A. 單鏈表 B. 雙鏈表 C. 循環鏈表 D. 順序表16、在一個單鏈表中,若刪除p所指向結點的后續結點,則執行( )。A. p-next=p-next-next;B. p=p-next;p-next=p-next-next;C. p =p-ne

7、xt;D. p=p-next-next;17、將長度為n的單鏈表連接在長度為m的單鏈表之后的算法的時間復雜度為( )。A. O(1)B. O(n)C. O(m)D. O(m+n)18、線性表的順序存儲結構是一種( )存儲結構。A. 隨機存取B. 順序存取C. 索引存取D. 散列存取19、順序表中,插入一個元素所需移動的元素平均數是( )。 A. (n-1)/2 B. n C. n+1 D. (n+1)/210、循環鏈表的主要優點是( )。A. 不再需要頭指針 B. 已知某結點位置后能容易找到其直接前驅 C. 在進行插入、刪除運算時能保證鏈表不斷開 D. 在表中任一結點出發都能掃描整個鏈表11、

8、不帶頭結點的單鏈表head為空的判定條件是( A )。A. head=NULL B. head-next=NULL C. head-next=head D. head!=NULL答案B是帶頭結點的12、在下列對順序表進行的操作中,算法時間復雜度為O(1)的是( )。A. 訪問第i個元素的前驅(1next=s-next;s-next=p; B. s-next=p;q-next=s-next; C. p-next=s-next;s-next=q; D. s-next=q;p-next=s-next;14、在以下的敘述中,正確的是( )。A. 線性表的順序存儲結構優于鏈表存儲結構B. 線性表的順序存

9、儲結構適用于頻繁插入/刪除數據元素的情況C. 線性表的鏈表存儲結構適用于頻繁插入/刪除數據元素的情況D. 線性表的鏈表存儲結構優于順序存儲結構15、在表長為n的順序表中,當在任何位置刪除一個元素的概率相同時,刪除一個元素所需移動的平均個數為( )。A. (n-1)/2 B. n/2 C. (n+1)/2D. n16、在一個單鏈表中,已知q所指結點是p所指結點的前驅結點,若在q和p之間插入一個結點s,則執行( )。A. s-next=p-next; p-next=s; B. p-next=s-next;s-next=p; C. q-next=s;s-next=p; D. p-next=s;s-n

10、ext=q;17、在單鏈表中,指針p指向元素為x的結點,實現刪除x的后繼的語句是( )。A. p=p-next; B. p-next=p-next-next; C. p-next=p;D. p=p-next-next;18、在頭指針為head且表長大于1的單循環鏈表中,指針p指向表中某個結點,若p-next-next=head,則( )。A. p指向頭結點B. p指向尾結點C. p的直接后繼是頭結點D. p的直接后繼是尾結點二、填空題1、設單鏈表的結點結構為(data,next)。已知指針p指向單鏈表中的結點,q指向新結點,欲將q插入到p結點之后,則需要執行的語句: ; 。答案:q-next=

11、p-next p-next=q2、線性表的邏輯結構是 ,其所含元素的個數稱為線性表的 。答案:線性結構 長度3、寫出帶頭結點的雙向循環鏈表L為空表的條件 。答案:L-prior=L-next=L4、帶頭結點的單鏈表head為空的條件是 。答案:head-next=NULL5、在一個單鏈表中刪除p所指結點的后繼結點時,應執行以下操作:q = p-next;p-next= _ q-next _;三、判斷題1、單鏈表不是一種隨機存儲結構。 P2、在具有頭結點的單鏈表中,頭指針指向鏈表的第一個數據結點。O3、用循環單鏈表表示的鏈隊列中,可以不設隊頭指針,僅在隊尾設置隊尾指針。P4、順序存儲方式只能用于

12、存儲線性結構。O5、在線性表的順序存儲結構中,邏輯上相鄰的兩個元素但是在物理位置上不一定是相鄰的。O6、鏈式存儲的線性表可以隨機存取。X四、程序分析填空題1、函數GetElem實現返回單鏈表的第i個元素,請在空格處將算法補充完整。int GetElem(LinkList L,int i,Elemtype *e)LinkList p;int j;p=L-next;j=1;while(p&ji) return ERROR;*e= (2) ;return OK;答案:(1)p=p-next (2)p-data2、函數實現單鏈表的插入算法,請在空格處將算法補充完整。int ListInsert(Lin

13、kList L,int i,ElemType e) LNode *p,*s;int j; p=L;j=0; while(p!=NULL)&(jnext;j+; if(p=NULL|ji-1) return ERROR; s=(LNode *)malloc(sizeof(LNode); s-data=e; (1) ; (2) ; return OK;/*ListInsert*/答案:(1)s-next=p-next (2)p-next=s3、函數ListDelete_sq實現順序表刪除算法,請在空格處將算法補充完整。int ListDelete_sq(Sqlist *L,int i) int k

14、; if(iL-length) return ERROR;for(k=i-1;klength-1;k+) L-slistk= (1) ; (2) ; return OK;答案:(1)L-slistk+1 (2) -L-Length 4、函數實現單鏈表的刪除算法,請在空格處將算法補充完整。int ListDelete(LinkList L,int i,ElemType *s) LNode *p,*q; int j; p=L;j=0; while( (1) )&(jnext;j+; if(p-next=NULL|ji-1) return ERROR; q=p-next; (2) ; *s=q-da

15、ta; free(q); return OK;/*listDelete*/答案:(1)p-next!=NULL (2)p-next=q-next5、寫出算法的功能。int L(head)node * head;int n=0;node *p;p=head;while(p!=NULL) p=p-next; n+; return(n);答案:求單鏈表head的長度五、綜合題1、編寫算法,實現帶頭結點單鏈表的逆置算法。答案:void invent(Lnode *head) Lnode *p,*q; if(!head-next) return ERROR; p=head-next; q=p-next;

16、 p-next =NULL; while(q) p=q; q=q-next; p-next=head-next; head-next=p; 2、有兩個循環鏈表,鏈頭指針分別為L1和L2,要求寫出算法將L2鏈表鏈到L1鏈表之后,且連接后仍保持循環鏈表形式。答案:void merge(Lnode *L1, Lnode *L2) Lnode *p,*q ; while(p-next!=L1)p=p-next;while(q-next!=L2)q=q-next;q-next=L1; p-next =L2; 3、設一個帶頭結點的單向鏈表的頭指針為head,設計算法,將鏈表的記錄,按照data域的值遞增排

17、序。答案:void assending(Lnode *head) Lnode *p,*q , *r, *s; p=head-next; q=p-next; p-next=NULL; while(q)r=q; q=q-next;if(r-datadata) r-next=p; head-next=r; p=r; elsewhile(!p & r-datap-data)s=p; p=p-next; r-next=p; s-next=r;p=head-next; 4、編寫算法,將一個頭指針為head不帶頭結點的單鏈表改造為一個單向循環鏈表,并分析算法的時間復雜度。答案:void linklist_c

18、(Lnode *head) Lnode *p; p=head; if(!p) return ERROR;while(p-next!=NULL)p=p-next;p-next=head; 設單鏈表的長度(數據結點數)為N,則該算法的時間主要花費在查找鏈表最后一個結點上(算法中的while循環),所以該算法的時間復雜度為O(N)。5、已知head為帶頭結點的單循環鏈表的頭指針,鏈表中的數據元素依次為(a1,a2,a3,a4,an),A為指向空的順序表的指針。閱讀以下程序段,并回答問題:(1)寫出執行下列程序段后的順序表A中的數據元素;(2)簡要敘述該程序段的功能。if(head-next!=hea

19、d)p=head-next;A-length=0;while(p-next!=head)p=p-next;A-dataA-length +=p-data;if(p-next!=head)p=p-next;答案: (1) (a2, a4, , ) (2)將循環單鏈表中偶數結點位置的元素值寫入順序表A6、設順序表va中的數據元數遞增有序。試寫一算法,將x插入到順序表的適當位置上,以保持該表的有序性。答案:void Insert_sq(Sqlist va, ElemType x) int i, j, n; n=length(va); if(x=vai)van=x;elsei=0;while(xvai

20、) i+;for(j=n-1;j=I;j-)vaj+1=vaj;vai=x; n+; 7、假設線性表采用順序存儲結構,表中元素值為整型。閱讀算法f2,設順序表L=(3,7,3,2,1,1,8,7,3),寫出執行算法f2后的線性表L的數據元素,并描述該算法的功能。 void f2(SeqList *L) int i,j,k;k=0;for(i=0;ilength;i+) for(j=0;jdatai!=L-dataj;j+); if(j=k) if(k!=i)L-datak=L-datai; k+; L-length=k;答案: (3,7,2,1,8) 刪除順序表中重復的元素8、已知線性表中的元

21、素以值遞增有序排列,并以單鏈表作存儲結構。試寫一算法,刪除表中所有大于x且小于y的元素(若表中存在這樣的元素)同時釋放被刪除結點空間。答案:void Delete_list(Lnode *head, ElemType x, ElemType y) Lnode *p, *q; if(!head) return ERROR;p=head; q=p;while(!p) if(p-datax) & (p-datanext; free(p); p=head; q=p; elseq-next=p-next; free(p);p=q-next; elseq=p; p=p-next; 9、在帶頭結點的循環鏈表

22、L中,結點的數據元素為整型,且按值遞增有序存放。給定兩個整數a和b,且arear=Q-front B. Q-rear=Q-front+1 C. Q-front=(Q-rear+1)%n D. Q-front=(Q-rear-1)%n3、設計一個判別表達式中括號是否配對的算法,采用( )數據結構最佳。A. 順序表 B. 鏈表 C. 隊列 D. 棧4、帶頭結點的單鏈表head為空的判定條件是( )。A. head=NULLB. head-next=NULLC. head-next!=NULL D. head!=NULL5、一個棧的輸入序列為:1,2,3,4,則棧的不可能輸出的序列是( )。A. 1

23、243 B. 2134 C. 1432 D. 4312E. 32146、若用一個大小為6的數組來實現循環隊列,且當rear和front的值分別為0,3。當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為( )。A. 1和5 B. 2和4C. 4和2 D. 5和17、隊列的插入操作是在( )。A. 隊尾 B. 隊頭C. 隊列任意位置D. 隊頭元素后8、循環隊列的隊頭和隊尾指針分別為front和rear,則判斷循環隊列為空的條件是( )。A. front=rear B. front=0 C. rear=0 D. front=rear+19、一個順序棧S,其棧頂指針為top,則

24、將元素e入棧的操作是( )。A. *S-top=e;S-top+; B. S-top+;*S-top=e; C. *S-top=e D. S-top=e;10、表達式a*(b+c)-d的后綴表達式是( )。A. abcd+-B. abc+*d-C. abc*+d- D. -+*abcd11、將遞歸算法轉換成對應的非遞歸算法時,通常需要使用( )來保存中間結果。A. 隊列 B. 棧C. 鏈表 D. 樹12、棧的插入和刪除操作在( )。 A. 棧底 B. 棧頂 C. 任意位置 D. 指定位置13、五節車廂以編號1,2,3,4,5順序進入鐵路調度站(棧),可以得到( )的編組。A. 3,4,5,1,

25、2B. 2,4,1,3,5C. 3,5,4,2,1D. 1,3,5,2,414、判定一個順序棧S(??臻g大小為n)為空的條件是( )。A. S-top=0 B. S-top!=0C. S-top=nD. S-top!=n15、在一個鏈隊列中,front和rear分別為頭指針和尾指針,則插入一個結點s的操作為( )。A. front=front-next B. s-next=rear;rear=sC. rear-next=s;rear=s;D. s-next=front;front=s;16、一個隊列的入隊序列是1,2,3,4,則隊列的出隊序列是( )。A. 1,2,3,4B. 4,3,2,1C

26、. 1,4,3,2D. 3,4,1,217、依次在初始為空的隊列中插入元素a,b,c,d以后,緊接著做了兩次刪除操作,此時的隊頭元素是( )。A. a B. b C. c D. d18、正常情況下,刪除非空的順序存儲結構的堆棧的棧頂元素,棧頂指針top的變化是( )。A. top不變 B. top=0 C. top=top+1 D. top=top-119、判斷一個循環隊列Q(空間大小為M)為空的條件是( )。A. Q-front=Q-rear B. Q-rear-Q-front-1=M C. Q-front+1=Q-rear D. Q-rear+1=Q-front20、設計一個判別表達式中左

27、右括號是否配對出現的算法,采用( )數據結構最佳。A. 線性表的順序存儲結構B. 隊列C. 棧 D. 線性表的鏈式存儲結構21、當用大小為N的數組存儲順序循環隊列時,該隊列的最大長度為( )。A. NB. N+1C. N-1D. N-222、隊列的刪除操作是在( )。A. 隊首B. 隊尾C. 隊前D. 隊后23、若讓元素1,2,3依次進棧,則出棧次序不可能是( )。A. 3,2,1B. 2,1,3C. 3,1,2 D. 1,3,224、循環隊列用數組A0,m-1存放其元素值,已知其頭尾指針分別是front和rear,則當前隊列中的元素個數是( )。A. (rear-front+m)%mB. r

28、ear-front+1C. rear-front-1D. rear-front25、在解決計算機主機和打印機之間速度不匹配問題時,通常設置一個打印數據緩沖區,主機將要輸出的數據依次寫入該緩沖區,而打印機則從該緩沖區中取走數據打印。該緩沖區應該是一個( )結構。A. 堆棧 B. 隊列C. 數組 D. 線性表26、棧和隊列都是( )。A. 鏈式存儲的線性結構 B. 鏈式存儲的非線性結構 C. 限制存取點的線性結構 D. 限制存取點的非線性結構27、在一個鏈隊列中,假定front和rear分別為隊頭指針和隊尾指針,刪除一個結點的操作是( )。A. front=front-next B. rear=

29、rear-nextC. rear-next=frontD. front-next=rear28、隊和棧的主要區別是( )。A. 邏輯結構不同 B. 存儲結構不同C. 所包含的運算個數不同 D. 限定插入和刪除的位置不同二、填空題1、設棧S和隊列Q的初始狀態為空,元素e1,e2,e3,e4,e5,e6依次通過棧S,一個元素出棧后即進入隊列Q,若6個元素出隊的序列是e2,e4,e3,e6,e5,e1,則棧的容量至少應該是 。答案:32、一個循環隊列Q的存儲空間大小為M,其隊頭和隊尾指針分別為front和rear,則循環隊列中元素的個數為: 。答案:(rear-front+M)%M3、在具有n個元素

30、的循環隊列中,隊滿時具有 個元素。答案:n-14、設循環隊列的容量為70,現經過一系列的入隊和出隊操作后,front為20,rear為11,則隊列中元素的個數為 。答案:615、已知循環隊列的存儲空間大小為20,且當前隊列的頭指針和尾指針的值分別為8和3,且該隊列的當前的長度為_。三、判斷題1、棧和隊列都是受限的線性結構。P2、在單鏈表中,要訪問某個結點,只要知道該結點的地址即可;因此,單鏈表是一種隨機存取結構。O3、以鏈表作為棧的存儲結構,出棧操作必須判別??盏那闆r。P四、程序分析填空題1、已知棧的基本操作函數:int InitStack(SqStack *S); /構造空棧int Stac

31、kEmpty(SqStack *S);/判斷??読nt Push(SqStack *S,ElemType e);/入棧int Pop(SqStack *S,ElemType *e);/出棧函數conversion實現十進制數轉換為八進制數,請將函數補充完整。void conversion()InitStack(S);scanf(“%d”,&N);while(N) (1) ;N=N/8;while( (2) )Pop(S,&e);printf(“%d”,e);/conversion答案:(1)Push(S,N%8) (2)!StackEmpty(S)2、寫出算法的功能。int function(

32、SqQueue *Q,ElemType *e)if(Q-front=Q-rear)return ERROR;*e=Q-baseQ-front;Q-front=(Q-front+1)%MAXSIZE;return OK;3、閱讀算法f2,并回答下列問題:(1)設隊列Q=(1,3,5,2,4,6)。寫出執行算法f2后的隊列Q;(2)簡述算法f2的功能。void f2(Queue *Q) DataType e; if (!QueueEmpty(Q) e=DeQueue(Q); f2(Q); EnQueue(Q,e); 答案:(1)6,4,2,5,3,1(2)將隊列倒置五、綜合題1、假設以帶頭結點的循

33、環鏈表表示隊列,并且只設一個指針指向隊尾結點,但不設頭指針,請寫出相應的入隊列算法(用函數實現)。答案:void EnQueue(Lnode *rear, ElemType e) Lnode *new; New=(Lnode *)malloc(sizeof(Lnode);If(!new) return ERROR;new-data=e; new-next=rear-next; rear-next=new; rear =new; 2、已知Q是一個非空隊列,S是一個空棧。編寫算法,僅用隊列和棧的ADT函數和少量工作變量,將隊列Q的所有元素逆置。棧的ADT函數有:void makeEmpty(SqS

34、tack s);置空棧void push(SqStack s,ElemType e);元素e入棧ElemType pop(SqStack s);出棧,返回棧頂元素int isEmpty(SqStack s);判斷??贞犃械腁DT函數有:void enQueue(Queue q,ElemType e);元素e入隊ElemType deQueue(Queue q);出隊,返回隊頭元素int isEmpty(Queue q);判斷隊空答案:void QueueInvent(Queue q) ElemType x; makeEmpty(SqStack s);while(!isEmpty(Queue q

35、)x=deQueue(Queue q);push(SqStack s, ElemTypex);while(!isEmpty(SqStack s)x=pop(SqStack s); enQueue(Queue q, ElemType x); 3、對于一個棧,給出輸入項A,B,C,D,如果輸入項序列為A,B,C,D,試給出全部可能的輸出序列。答案:出棧的可能序列: ABCD ABDC ACDB ACBD ADCB BACD BADC BCAD BCDA CBDA CBAD CDBA DCBA第四章 串一、選擇題1、設有兩個串S1和S2,求串S2在S1中首次出現位置的運算稱作( C )。A. 連接

36、B. 求子串C. 模式匹配D. 判斷子串2、已知串S=aaab,則next數組值為( A )。A. 0123 B. 1123 C. 1231 D. 12113、串與普通的線性表相比較,它的特殊性體現在( C )。A. 順序的存儲結構B. 鏈式存儲結構C. 數據元素是一個字符 D. 數據元素任意4、設串長為n,模式串長為m,則KMP算法所需的附加空間為( A )。 A. O(m) B. O(n) C. O(m*n) D. O(nlog2m)5、空串和空格串( B )。 A. 相同 B. 不相同 C. 可能相同 D. 無法確定6、與線性表相比,串的插入和刪除操作的特點是( )。A. 通常以串整體作

37、為操作對象B. 需要更多的輔助空間C. 算法的時間復雜度較高D. 涉及移動的元素更多7、設SUBSTR(S,i,k)是求S中從第i個字符開始的連續k個字符組成的子串的操作,則對于S=Beijing&Nanjing,SUBSTR(S,4,5)=( B )。A. ijing B. jing&C. ingNa D. ing&N二、判斷題( )1、造成簡單模式匹配算法BF算法執行效率低的原因是有回溯存在。( )2、KMP算法的最大特點是指示主串的指針不需要回溯。( )3、完全二叉樹某結點有右子樹,則必然有左子樹。三、填空題1、求子串在主串中首次出現的位置的運算稱為 模式匹配 。2、設s=IAMATEA

38、CHER,其長度是_。3、兩個串相等的充分必要條件是兩個串的長度相等且 對應位置字符相同 。四、程序填空題1、函數kmp實現串的模式匹配,請在空格處將算法補充完整。int kmp(sqstring *s,sqstring *t,int start,int next)int i=start-1,j=0; while(ilen&jlen) if(j=-1|s-datai=t-dataj) i+;j+; else j= ; if(j=t-len) return( ); else return(-1);2、函數實現串的模式匹配算法,請在空格處將算法補充完整。int index_bf(sqstring*

39、s,sqstring *t,int start) int i=start-1,j=0; while(ilen&jlen) if(s-datai=t-dataj) i+;j+; else i= i-j+1 ;j=0; if(j=t-len) return i-t-len+1 ; else return -1;/*listDelete*/3、寫出下面算法的功能。int function(SqString *s1,SqString *s2)int i;for(i=0;ilength&ilength;i+)if(s-datai!=s2-datai)return s1-datai-s2-datai;re

40、turn s1-length-s2-length;答案:.串比較算法4、寫出算法的功能。int fun(sqstring *s,sqstring *t,int start) int i=start-1,j=0; while(ilen&jlen) if(s-datai=t-dataj) i+;j+; else i=i-j+1;j=0; if(j=t-len) return i-t-len+1; else return -1;答案:串的模式匹配算法第五章 數組和廣義表一、選擇題1、設廣義表L=(a,b,c),則L的長度和深度分別為( C )。A. 1和1 B. 1和3C. 1和2D. 2和32、廣

41、義表(a),a)的表尾是( B )。A. a B. (a)C. ()D. (a)3、稀疏矩陣的常見壓縮存儲方法有( C )兩種。A. 二維數組和三維數組 B. 三元組和散列表C. 三元組和十字鏈表D. 散列表和十字鏈表4、一個非空廣義表的表頭( D )。A. 不可能是子表 B. 只能是子表C. 只能是原子 D. 可以是子表或原子5、數組A0.5,0.6的每個元素占5個字節,將其按列優先次序存儲在起始地址為1000的內存單元中,則元素A55的地址是( )。A. 1175 B. 1180C. 1205 D. 12106、廣義表G=(a,b(c,d,(e,f),g)的長度是( A )。A. 3 B.

42、 4C. 7D. 87、采用稀疏矩陣的三元組表形式進行壓縮存儲,若要完成對三元組表進行轉置,只要將行和列對換,這種說法( B )。A. 正確 B. 錯誤C. 無法確定 D. 以上均不對8、廣義表(a,b,c)的表尾是( B )。A. b,c B. (b,c) C. c D. (c)9、常對數組進行兩種基本操作是( )。A. 建立和刪除 B. 索引和修改C. 查找和修改 D. 查找與索引10、對一些特殊矩陣采用壓縮存儲的目的主要是為了( D )。A. 表達變得簡單 B. 對矩陣元素的存取變得簡單C. 去掉矩陣中的多余元素 D. 減少不必要的存儲空間的開銷11、設有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,a11為第一個元素,其存儲地址為1,每元素占1個地址空間,則a85的地址為( )。A. 13B. 33C. 18 D. 4012、設矩陣A是一個對稱矩陣,為了節省存儲,將其下三角部分按行序存放在一維數組B1,n(n-1)/2中,對下三角部分中任一元素ai,j(i=j),在一維數組B的下標位置k的值是( B )。A. i(i-1)/2

溫馨提示

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

評論

0/150

提交評論