




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)練習(xí)題第二章線性表習(xí)題及答案
第二章線性表
一.名詞解釋
1.線性結(jié)構(gòu)2.數(shù)據(jù)結(jié)構(gòu)的順序?qū)崿F(xiàn)3.順序表4.鏈表5.數(shù)據(jù)結(jié)構(gòu)的鏈接實(shí)現(xiàn)
6.建表7.字符串8.串9.順序串10.鏈串
二、填空題
1.為了便于討論,有時(shí)將含n(n>=0)個(gè)結(jié)點(diǎn)的線性結(jié)構(gòu)表示成(a1,a2,??an),其中每
個(gè)ai代表一個(gè)______。a1稱為______結(jié)點(diǎn),an稱為______結(jié)點(diǎn),i稱為ai在線性表中的________
或______。對任意一對相鄰結(jié)點(diǎn)ai、ai┼1(1<=i<n),ai稱為ai┼1的直接______ai┼1稱為ai的直接______。
2.為了滿足運(yùn)算的封閉性,通常允許一種邏輯結(jié)構(gòu)出現(xiàn)不含任何結(jié)點(diǎn)的情況。不含任何結(jié)點(diǎn)的線性結(jié)構(gòu)記為______或______。
3.線性結(jié)構(gòu)的基本特征是:若至少含有一個(gè)結(jié)點(diǎn),則除起始結(jié)點(diǎn)沒有直接______外,其他結(jié)點(diǎn)有且僅有一個(gè)直接______;除終端結(jié)點(diǎn)沒有直接______外,其它結(jié)點(diǎn)有且僅有一個(gè)直接______.
4.所有結(jié)點(diǎn)按1對1的鄰接關(guān)系構(gòu)成的整體就是______結(jié)構(gòu)。
5.線性表的邏輯結(jié)構(gòu)是______結(jié)構(gòu)。其所含結(jié)點(diǎn)的個(gè)數(shù)稱為線性表的______,簡稱______.
6.表長為O的線性表稱為______
7.線性表典型的基本運(yùn)算包括:______、______、______、______、______、______等六種。
8.順序表的特點(diǎn)是______。
9.順序表的類型定義可經(jīng)編譯轉(zhuǎn)換為機(jī)器級。假定每個(gè)datatype類型的變量占用k(k>=1)個(gè)內(nèi)存單元,其中,b是順序表的第一個(gè)存儲結(jié)點(diǎn)的第一個(gè)單元的內(nèi)存地址,那么,第i個(gè)結(jié)點(diǎn)ai的存儲地址為______。
10.以下為順序表的插入運(yùn)算,分析算法,請?jiān)赺_____處填上正確的語句。
Voidinsert_sqlist(sqlistL,datatypex,inti)
/*將X插入到順序表L的第i-1個(gè)位置*/
{if(L.last==maxsize)error(“表滿”);
if((i<1)||(i>L.last+1))error(“非法位置”);
for(j=L.last;j>=i;j--)______;
L.data[i-1]=x;
L.last=L.last+1;
}
11.對于順序表的插入算法insert_sqlist來說,若以結(jié)點(diǎn)移動(dòng)為標(biāo)準(zhǔn)操作,則插入算法的最壞時(shí)間復(fù)雜性為________,量級是________。插入算法的平均時(shí)間復(fù)雜性為________,平均時(shí)間復(fù)雜性量級是________。
12.以下為順序表的刪除運(yùn)算,分析算法,請?jiān)赺_______處填上正確的語句。
voiddelete_sqlist(sqlistL,inti)/*刪除順序表L中的第i-1個(gè)位置上的結(jié)點(diǎn)*/
{if((i<1)||(i>L.last))error(“非法位置”);
for(j=i+1;j=L.last;j++)________;
L.last=L.last-1;
}
13.對于順序表的刪除算法delete_sqlist來說,若以結(jié)點(diǎn)移動(dòng)為標(biāo)準(zhǔn)操作,最壞情況時(shí)間復(fù)雜性及其量級分別是________和________,其平均時(shí)間復(fù)雜性及其量級分別為________1
和________。
14.以下為順序表的定位運(yùn)算,分析算法,請?jiān)赺_______處填上正確的語句。intlocate_sqlist(sqlistL,datatypeX)
/*在順序表L中查找第一值等于X的結(jié)點(diǎn)。若找到回傳該結(jié)點(diǎn)序號;否則回傳0*/{________;
while((i≤L.last)&&(L.data[i-1]!=X))i++;
if(________)return(i);
elsereturn(0);
}
15.對于順序表的定位算法,若以取結(jié)點(diǎn)值與參數(shù)X的比較為標(biāo)準(zhǔn)操作,平均時(shí)間復(fù)雜性量級為________。求表長和讀表元算法的時(shí)間復(fù)雜性為________。
16.在順序表上,求表長運(yùn)算LENGTH(L)可通過輸出________實(shí)現(xiàn),讀表元運(yùn)算GET(L,i)可通過輸出________實(shí)現(xiàn)。
17.線性表的常見鏈?zhǔn)酱鎯Y(jié)構(gòu)有________、________和________。
18.單鏈表表示法的基本思想是用________表示結(jié)點(diǎn)間的邏輯關(guān)系。
19.所有結(jié)點(diǎn)通過指針的鏈接而組織成________。
20.為了便于實(shí)現(xiàn)各種運(yùn)算,通常在單鏈表的第一個(gè)結(jié)點(diǎn)之前增設(shè)一個(gè)類型相同的結(jié)點(diǎn),稱為________,其它結(jié)點(diǎn)稱為________。
21.在單鏈表中,表結(jié)點(diǎn)中的第一個(gè)和最后一個(gè)分別稱為________和________。頭結(jié)點(diǎn)的數(shù)據(jù)域可以不存儲________,也可以存放一個(gè)________或________。
22.單鏈表INITIATE(L)的功能是建立一個(gè)空表??毡碛梢粋€(gè)________和一個(gè)________組成。
23.INITIATE()的功能是建立一個(gè)空表。請?jiān)赺_______處填上正確的語句。
lklistinitiate_lklist()/*建立一個(gè)空表*/
{________________;
________________;
return(t);
}
24.以下為求單鏈表表長的運(yùn)算,分析算法,請?jiān)赺_______處填上正確的語句。intlength_lklist(lklisthead)/*求表head的長度*/
{________;
j=0;
while(p->next!=NULL)
{________________;
j++;
}
return(j);/*回傳表長*/
}
25.以下為單鏈表按序號查找的運(yùn)算,分析算法,請?jiān)赺___處填上正確的語句。pointerfind_lklist(lklisthead,inti)
{p=head;j=0;
while(________________)
{p=p->next;j++;}
if(i==j)return(p);
2
elsereturn(NULL);
}
26.以下為單鏈表的定位運(yùn)算,分析算法,請?jiān)赺___處填上正確的語句。
intlocate_lklist(lklisthead,datatypex)
/*求表head中第一個(gè)值等于x的結(jié)點(diǎn)的序號。不存在這種結(jié)點(diǎn)時(shí)結(jié)果為0*/{p=head;j=0;
while(________________________________){p=p->next;j++;}
if(p->data==x)return(j);
elsereturn(0);
}
27.以下為單鏈表的刪除運(yùn)算,分析算法,請?jiān)赺___處填上正確的語句。
voiddelete_lklist(lklisthead,inti)
{p=find_lklist(head,i-1);
if(____________________________)
{q=________________;
p->next=p->next;
free(q);
}
elseerror(“不存在第i個(gè)結(jié)點(diǎn)”)
}
28.以下為單鏈表的插入運(yùn)算,分析算法,請?jiān)赺___處填上正確的語句。
voidinsert_lklist(lklisthead,datatypex,inti)
/*在表head的第i個(gè)位置上插入一個(gè)以x為值的新結(jié)點(diǎn)*/
{p=find_lklist(head,i-1);
if(p==NULL)error(“不存在第i個(gè)位置”);
else{s=________________;s->data=x;
s->next=________________;
p->next=s;
}
}
29.以下為單鏈表的建表算法,分析算法,請?jiān)赺___處填上正確的語句。
lklistcreate_lklist1()
/*通過調(diào)用initiate_lklist和insert_lklist算法實(shí)現(xiàn)的建表算法。假定$是結(jié)束標(biāo)志*/{ininiate_lklist(head);
i=1;
scanf(“%f”,&x);
while(x!=’$’)
{________________;
________________;
scanf(“%f”,&x);
}
return(head);
}
該建表算法的時(shí)間復(fù)雜性約等于____________,其量級為____________。
3
30.以下為單鏈表的建表算法,分析算法,請?jiān)赺___處填上正確的語句。
lklistcreate_lklist2()/*直接實(shí)現(xiàn)的建表算法。*/
{head=malloc(size);
p=head;
scanf(“%f”,&x);
while(x!=’$’)
{q=malloc(size);
q->data=x;
p->next=q;
________________;
scanf(“%f”,&x);
}
________________;
return(head);
}
此算法的量級為________________。
31.除單鏈表之外,線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)還有_________和_________等。
32.循環(huán)鏈表與單鏈表的區(qū)別僅僅在于其尾結(jié)點(diǎn)的鏈域值不是_________,而是一個(gè)指向_________的指針。
33.在單鏈表中若在每個(gè)結(jié)點(diǎn)中增加一個(gè)指針域,所含指針指向前驅(qū)結(jié)點(diǎn),這樣構(gòu)成的鏈表中有兩個(gè)方向不同的鏈,稱為______。
34.C語言規(guī)定,字符串常量按______處理,它的值在程序的執(zhí)行過程中是不能改變的。而串變量與其他變量不一樣,不能由______語句對其賦值。
35.含零個(gè)字符的串稱為______串,用______表示。其他串稱為______串。任何串中所含______的個(gè)數(shù)稱為該串的長度。
36.當(dāng)且僅當(dāng)兩個(gè)串的______相等并且各個(gè)對應(yīng)位置上的字符都______時(shí),這兩個(gè)串相等。一個(gè)串中任意個(gè)連續(xù)字符組成的序列稱為該串的______串,該串稱為它所有子串的______串。
37.串的順序存儲有兩種方法:一種是每個(gè)單元只存一個(gè)字符,稱為______格式,另一種是每個(gè)單元存放多個(gè)字符,稱為______格式。
38.通常將鏈串中每個(gè)存儲結(jié)點(diǎn)所存儲的字符個(gè)數(shù)稱為______。當(dāng)結(jié)點(diǎn)大小大于1時(shí),鏈串的最后一個(gè)結(jié)點(diǎn)的各個(gè)數(shù)據(jù)域不一定總能全被字符占滿,此時(shí),應(yīng)在這些未用的數(shù)據(jù)域里補(bǔ)上______。
三、單向選擇題
1.對于線性表基本運(yùn)算,以下結(jié)果是正確的是()
①初始化INITIATE(L),引用型運(yùn)算,其作用是建立一個(gè)空表L=Ф
.②求表長LENGTH(L),引用型運(yùn)算,其結(jié)果是線性表L的長度
③讀表元GET(L,i),引用型運(yùn)算。若1<=i<=LENGTH(L),其結(jié)果是線性表L的第i個(gè)結(jié)點(diǎn);否則,結(jié)果為0
④定位LOCATE(L,X),引用型運(yùn)算.若L中存在一個(gè)或多個(gè)值與X相等的結(jié)點(diǎn),運(yùn)算結(jié)果為這些結(jié)點(diǎn)的序號的最大值;否則運(yùn)算結(jié)果為0
⑤插入INSERT(L,X,i),加工型運(yùn)算。其作用是在線性表L的第i+1個(gè)位置上增加一個(gè)以X為值的新結(jié)點(diǎn)
⑥刪除DELETE(L,i),引用型運(yùn)算.其作用是撤銷線性表L的第i個(gè)結(jié)點(diǎn)Ai
4
2.線性結(jié)構(gòu)中的一個(gè)結(jié)點(diǎn)代表一個(gè)()
①數(shù)據(jù)元素②數(shù)據(jù)項(xiàng)③數(shù)據(jù)④數(shù)據(jù)結(jié)構(gòu)
3.順序表的一個(gè)存儲結(jié)點(diǎn)僅僅存儲線性表的一個(gè)()①數(shù)據(jù)元素②數(shù)據(jù)項(xiàng)③數(shù)據(jù)④數(shù)據(jù)結(jié)構(gòu)
4.順序表是線性表的()
①鏈?zhǔn)酱鎯Y(jié)構(gòu)②順序存儲結(jié)構(gòu)③索引存儲結(jié)構(gòu)④散列存儲結(jié)構(gòu)
5.對于順序表,以下說法錯(cuò)誤的是()
①順序表是用一維數(shù)組實(shí)現(xiàn)的線性表,數(shù)組的下標(biāo)可以看成是元素的絕對地址②順序表的所有存儲結(jié)點(diǎn)按相應(yīng)數(shù)據(jù)元素間的邏輯關(guān)系決定的次序依次排列
③順序表的特點(diǎn)是:邏輯結(jié)構(gòu)中相鄰的結(jié)點(diǎn)在存儲結(jié)構(gòu)中仍相鄰
④順序表的特點(diǎn)是:邏輯上相鄰的元素,存儲在物理位置也相鄰的單元中
6.對順序表上的插入、刪除算法的時(shí)間復(fù)雜性分析來說,通常以()為標(biāo)準(zhǔn)操作①條件判斷②結(jié)點(diǎn)移動(dòng)
③算術(shù)表達(dá)式④賦值語句
7.對于順序表的優(yōu)缺點(diǎn),以下說法錯(cuò)誤的是()
①無需為表示結(jié)點(diǎn)間的邏輯關(guān)系而增加額外的存儲空間
②可以方便地隨機(jī)存取表中的任一結(jié)點(diǎn)
③插人和刪除運(yùn)算較方便
④由于順序表要求占用連續(xù)的空間,存儲分配只能預(yù)先進(jìn)行(靜態(tài)分配)
⑤容易造成一部分空間長期閑置而得不到充分利用
8.指針的全部作用就是()
①指向某常量②指向某變量
③指向某結(jié)點(diǎn)④存儲某數(shù)據(jù)
9.除了(),其它任何指針都不能在算法中作為常量出現(xiàn),也無法顯示。
①頭指針②尾指針
③指針型變量④空指針
10.單鏈表表示法的基本思想是指針P表示結(jié)點(diǎn)間的邏輯關(guān)系,則以下說法錯(cuò)誤的是()①任何指針都不能用打印語句輸出一個(gè)指針型變量的值
②如果要引用(如訪問)p所指結(jié)點(diǎn),只需寫出p(以后跟域名)即可
③若想修改變量p的值(比如讓P指向另一個(gè)結(jié)點(diǎn)),則應(yīng)直接對p賦值
④對于一個(gè)指針型變量P的值。只需知道它指的是哪個(gè)結(jié)點(diǎn)
⑤結(jié)點(diǎn)*p是由兩個(gè)域組成的記錄,p->data是一個(gè)數(shù)據(jù)元素,p->next的值是一個(gè)指針
11.單鏈表的一個(gè)存儲結(jié)點(diǎn)包含()
①數(shù)據(jù)域或指針域
②指針域或鏈域
③指針域和鏈域
④數(shù)據(jù)域和鏈域
12.對于單鏈表表示法,以下說法錯(cuò)誤的是()
①數(shù)據(jù)域用于存儲線性表的一個(gè)數(shù)據(jù)元素
②指針域或鏈域用于存放一個(gè)指向本結(jié)點(diǎn)所含數(shù)據(jù)元素的直接后繼所在結(jié)點(diǎn)的指針③所有數(shù)據(jù)通過指針的鏈接而組織成單鏈表
④NULL稱為空指針,它不指向任何結(jié)點(diǎn),只起標(biāo)志作用
13.對于單鏈表表示法,以下說法錯(cuò)誤的是()①指向鏈表的第一個(gè)結(jié)點(diǎn)的指針,稱為頭指針
5
②單鏈表的每一個(gè)結(jié)點(diǎn)都被一個(gè)指針?biāo)?/p>
③任何結(jié)點(diǎn)只能通過指向它的指針才能引用
④終端結(jié)點(diǎn)的指針域就為NULL
⑤尾指針變量具標(biāo)識單鏈表的作用,故常用尾指針變量來命名單鏈表
14.有時(shí)為了敘述方便,可以對一些概念進(jìn)行簡稱,以下說法錯(cuò)誤的是()①將“指針型變量”簡稱為“指針”
②將“頭指針變量”稱為“頭指針”
③將“修改某指針型變量的值”稱為“修改某指針”
④將“p中指針?biāo)附Y(jié)點(diǎn)”稱為“P值”
15.設(shè)指針P指向雙鏈表的某一結(jié)點(diǎn),則雙鏈表結(jié)構(gòu)的對稱性可用()式來刻畫①p->prior->next->==p->next->next
②p->prior->prior->==p->next->prior
③p->prior->next->==p->next->prior
④p->next->next==p->prior->prior
16.以下說法錯(cuò)誤的是()
①對循環(huán)鏈表來說,從表中任一結(jié)點(diǎn)出發(fā)都能通過前后操作而掃描整個(gè)循環(huán)鏈表②對單鏈表來說,只有從頭結(jié)點(diǎn)開始才能掃描表中全部結(jié)點(diǎn)
③雙鏈表的特點(diǎn)是找結(jié)點(diǎn)的前趨和后繼都很容易
④對雙鏈表來說,結(jié)點(diǎn)*P的存儲位置既存放在其前趨結(jié)點(diǎn)的后繼指針域中,也存放在它的后繼結(jié)點(diǎn)的前趨指針域中。
17.在循環(huán)鏈表中,將頭指針改設(shè)為尾指針(rear)后,其頭結(jié)點(diǎn)和尾結(jié)點(diǎn)的存儲位置分別是()
①real和rear->next->next
②rear->next和real
③rear->next->next和rear
④rear和rear->next
18.以下說錯(cuò)誤的是()
①對于線性表來說,定位運(yùn)算在順序表和單鏈表上的量級均為O(n)
②讀表元運(yùn)算在順序表上只需常數(shù)時(shí)間O(1)便可實(shí)現(xiàn),因此順序表是一種隨機(jī)存取結(jié)構(gòu)③在鏈表上實(shí)現(xiàn)讀表元運(yùn)算的平均時(shí)間復(fù)雜性為O(1)
④鏈入、摘除操作在鏈表上的實(shí)現(xiàn)可在O(1)時(shí)間內(nèi)完成
⑤鏈入、摘除操作在順序表上的實(shí)現(xiàn),平均時(shí)間復(fù)雜性為O(n)
19.在串的基本運(yùn)算中,屬于加工型運(yùn)算的有()
①EQAL(S,T)②LENGTH(S)
③CONCAT(S,T)④REPLACE(S,T,R)⑤INDEX(S,T)
20.在串的基本運(yùn)算中,屬于引用型運(yùn)算的有()
①ASSIGN(S,T)②INSERT(S1,i,S2)
③DELETE(S,i,j)④SUBSTR(S,i,j)⑤REPLACE(S,T,R)
21.循環(huán)鏈表主要優(yōu)點(diǎn)是()
①不再需要頭指針了
②已知某個(gè)結(jié)點(diǎn)的位置后,能夠容易找到它的直接前趨
③在進(jìn)行插入、刪除運(yùn)算時(shí),能更好地保證鏈表不斷開
④從表中任一結(jié)點(diǎn)出發(fā)都能掃描到整個(gè)鏈表
22,每種數(shù)據(jù)結(jié)構(gòu)都具備三個(gè)基本操作:插入、刪除和查找,這種說法()
6
①正確②錯(cuò)誤
23.以下說法錯(cuò)誤的是()
①數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計(jì)算機(jī)內(nèi)實(shí)際的存儲形式
②算法和程序沒有區(qū)別,所以在數(shù)據(jù)結(jié)構(gòu)中二者是通用的
③對鏈表進(jìn)行插人和刪除操作時(shí),不必移動(dòng)結(jié)點(diǎn)
④雙鏈表中至多只有一個(gè)結(jié)點(diǎn)的后繼指針為空
24.以下說法正確的是
①線性結(jié)構(gòu)的基本特征是:每個(gè)結(jié)點(diǎn)有且僅有一個(gè)直接前趨和一個(gè)直接后繼
②線性表的各種基本運(yùn)算在順序存儲結(jié)構(gòu)上的實(shí)現(xiàn)均比在鏈?zhǔn)酱鎯Y(jié)構(gòu)上的實(shí)現(xiàn)效率要
低
③在線性表的順序存儲結(jié)構(gòu)中,插人和刪除元素時(shí),移動(dòng)元素的個(gè)數(shù)與該元素位置有關(guān)④順序存儲的線性表的插人和刪除操作不需要付出很大的代價(jià),因?yàn)槠骄看尾僦挥薪话氲脑匦枰苿?dòng)
25.以下說法錯(cuò)誤的是()
①求表長、定位這二種運(yùn)算在采用順序存儲結(jié)構(gòu)時(shí)實(shí)現(xiàn)的效率不比采用鏈?zhǔn)酱鎯Y(jié)構(gòu)時(shí)實(shí)現(xiàn)的效率低
②順序存儲的線性表可以隨機(jī)存取
③由于順序存儲要求連續(xù)的存儲區(qū)域,所以在存儲管理上不夠靈活
④線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)優(yōu)于順序存儲結(jié)構(gòu)
26.以下說法錯(cuò)誤的是()
①線性表的元素可以是各種各樣的,邏輯上相鄰的元素在物理位置上不一定相鄰②在線性表的順序存儲結(jié)構(gòu)中,邏輯上相鄰的兩個(gè)元素在物理位置上不一定相鄰③在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,邏輯上相鄰的元素在物理位置上不一定相鄰
④線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點(diǎn)是用一組任意的存儲單元存儲線性表的數(shù)據(jù)元素
27.以下說法正確的是()
①在單鏈表中,任何兩個(gè)元素的存儲位置之間都有固定的聯(lián)系,因?yàn)榭梢詮念^結(jié)點(diǎn)進(jìn)行查找任何一個(gè)元素
②在單鏈表中,要取得某個(gè)元素,只要知道該元素的指針即可,因此,單鏈表是隨機(jī)存取的存儲結(jié)構(gòu)
③順序存儲結(jié)構(gòu)屬于靜態(tài)結(jié)構(gòu),鏈?zhǔn)浇Y(jié)構(gòu)屬于動(dòng)態(tài)結(jié)構(gòu)
④順序存儲方式只能用于存儲線性結(jié)構(gòu)
28.以下說法正確的是()
①順序存儲方式的優(yōu)點(diǎn)是存儲密度大、且插入、刪除運(yùn)算效率高
②鏈表的每個(gè)結(jié)點(diǎn)中都恰好包含一個(gè)指針
③線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈?zhǔn)酱鎯Y(jié)構(gòu)
④順序存儲結(jié)構(gòu)屬于靜態(tài)結(jié)構(gòu),鏈?zhǔn)浇Y(jié)構(gòu)屬于動(dòng)態(tài)結(jié)構(gòu)
29.下面關(guān)于線性表的敘述正確的是()
①線性表采用順序存儲,必須占用一片連續(xù)的存儲單元
②線性表采用順序存儲,便于進(jìn)行插人和刪除操作
③線性表采用鏈接存儲,不必占用一片連續(xù)的存儲單元
④線性表采用鏈接存儲,不便于插人和刪除操作
30.線性表L=(a1,a2,...,ai,...,an),下列說法正確的是()
①每個(gè)元素都有一個(gè)直接前驅(qū)和直接后繼
②線性表中至少要有一個(gè)元素
7
③表中諸元素的排列順序必須是由小到大或由大到小的
④除第一個(gè)元素和最后一個(gè)元素外其余每個(gè)元素都有一個(gè)且僅有一個(gè)直接前驅(qū)和直接后繼
31.線性表的邏輯順序與存儲順序總是一致的,這種說法()
①正確②不正確
32.設(shè)p,q是指針,若p=q,則*p=*q,這種說法()
①正確②不正確
33.線性表若采用鏈表存儲結(jié)構(gòu)時(shí),要求內(nèi)存中可用存儲單元的地址()
①必需是聯(lián)系的②部分地址必須是連續(xù)的
③一定是不連續(xù)的④連續(xù)不連續(xù)都可以
34.設(shè)REAR是指向非空帶頭結(jié)點(diǎn)的循環(huán)單鏈表的尾指針,則刪除表首結(jié)點(diǎn)的操作可表示為
()
①p=rear;②rear=rear->next;
rear=rear->next;free(rear);
free(p)
③rear=rear->next->next;④p=rear->next->next;
free(rear);rear->next->next=p->next;
free(p);
35.單鏈表中,增加頭結(jié)點(diǎn)的目的是為了()
①使單鏈表至少有一個(gè)結(jié)點(diǎn)②標(biāo)示表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置
③方便運(yùn)算的實(shí)現(xiàn)④說明單鏈表是線性表的鏈?zhǔn)酱鎯?shí)現(xiàn)
36線性結(jié)構(gòu)中的一個(gè)結(jié)點(diǎn)代表一個(gè)數(shù)據(jù)元素,通常要求同一線性結(jié)構(gòu)的所有結(jié)點(diǎn)所代表的數(shù)據(jù)元素具有相同的特性,這意味著
①每個(gè)結(jié)點(diǎn)所代表的數(shù)據(jù)元素都一樣。
②每個(gè)結(jié)點(diǎn)所代表的數(shù)據(jù)元素包含的數(shù)據(jù)項(xiàng)的個(gè)數(shù)要相等
③不僅數(shù)據(jù)元素包含的數(shù)據(jù)項(xiàng)的個(gè)數(shù)要相同,而且對應(yīng)數(shù)據(jù)項(xiàng)的類型要一致
④結(jié)點(diǎn)所代表的數(shù)據(jù)元素有同一特點(diǎn)
37.帶頭結(jié)點(diǎn)的單鏈表Head為空的判定條件是
①Head=Null②Head->next=NULL③Head->next=Head
38.非空的單循環(huán)鏈表L的尾結(jié)點(diǎn)*P,滿足
P->next=NULLP=NULLP->next=LP=L.
39.雙向鏈表結(jié)點(diǎn)結(jié)構(gòu)如下:
其中:LLink是指向前驅(qū)結(jié)點(diǎn)的指針域:
data是存放數(shù)據(jù)元素的數(shù)據(jù)域;
Rlink是指向后繼結(jié)點(diǎn)的指針域。
下面給出的算法段是要把一個(gè)新結(jié)點(diǎn)*Q作為非空雙向鏈表中的結(jié)點(diǎn)*p的前驅(qū),插入到此雙向鏈表中。不能正確完成要求的算法段是
①Q(mào)->LLink=P->LLink;②P->LLink=Q;
Q->Rlink=P;Q->Rlink=P;
P->LLink=Q;P->LLink->Rlink=Q;
P->LLink->Rlink=Q;Q->LLink=P->LLink;
③Q->LLink=P->LLink;
Q->Rlink=P;
8
P->LLink->Rlink=Q;
P->LLink=Q;
40.若某線性表中最常用的操作是取第i個(gè)元素和找第i個(gè)元素的前趨元素,則采用()存儲方式最節(jié)省時(shí)間。
①順序表②單鏈表③雙鏈表④單循環(huán)鏈表
41.串是任意有限個(gè)
①符號構(gòu)成的集合②符號構(gòu)成的序列
③字符構(gòu)成的集合④字符構(gòu)成的序列
四、簡答及應(yīng)用
1.請用類C語言描述順序表,并予以解釋說明。
2.請用類C語言描述單鏈表的類型定義,并予以解釋說明。
3.請用類C語言描述雙鏈表的類型定義,并予以解釋說明。
4.請用類C語言描述順序串的類型定義。
5.請用類C語言描述鏈串的類型定義。
6.敘述以下概念的區(qū)別:頭指針變量、頭指針、頭結(jié)點(diǎn)、首結(jié)點(diǎn),并說明頭指針變量和頭結(jié)點(diǎn)的作用。
7.有哪些鏈表可僅由一個(gè)尾指針來惟一確定,即從尾指針出發(fā)能訪問到鏈表上任何一個(gè)結(jié)點(diǎn)。
8.簡述下列每對術(shù)語的區(qū)別:
空串和空格串;串變量和串常量;主串和子串;串變量的名字與串變量的值。
9.設(shè)有A=””,B="mule",C="old",D="my",試計(jì)算下列運(yùn)算的結(jié)果(注:A+B是CONCAT(A,B)的簡寫,A=""的""含有兩個(gè)空格)。
(a)A+B
(b)B+A
(c)D+C+B
(d)SUBSTR(B,3,2)
(e)SUBSTR(C,1,0)
(f)LENGTH(A)
(g)LENGTH(D)
(h)INDEX(B,D)
(i)INDEX(C,"d")
(j)INSERT(D,2,C)
(k)INSERT(B,1,A)
(l)DELETE(B,2,2)
(m)DELETE(B,2,0)
10.已知:S="(xyz)*",T="(x+z)*y"。試?yán)眠B接、求子串和置換等基本運(yùn)算,將S轉(zhuǎn)換為T。
五、算法設(shè)計(jì)
1.設(shè)A=(a1,a2,a3,......an)和B=(b1,b2,...,bm)是兩個(gè)線性表(假定所含數(shù)據(jù)元素均為
整數(shù))。若n=m且ai=bi(i=1,...,n),則稱A=B;若ai=bi(i=1,...,j)且aj+1<bj+1(j<n<=m),則
稱A<B;在其他情況下均稱A>B。是編寫一個(gè)比較A和B的算法,當(dāng)A<B,A=B或A>B是分別輸出-1,0或者1。
2,試編寫在無頭結(jié)點(diǎn)的單鏈表上實(shí)現(xiàn)線性表基本運(yùn)算LOCATE(L,X)、INSERT(L,X,i)和DELETE(L,i)的算法,并和在帶頭結(jié)點(diǎn)的單鏈表上實(shí)現(xiàn)相的算法進(jìn)行比較。
3.試編寫在不帶頭結(jié)點(diǎn)的單鏈表上實(shí)現(xiàn)線性表基本運(yùn)算LENGTH(L)的算法。
4.假設(shè)有兩個(gè)按數(shù)據(jù)元素值遞增有序排列的線性表A和B,均以單鏈表作存儲結(jié)構(gòu)。編寫算9
法將A表和B表歸并成一個(gè)按元素值遞減有序(即非遞增有序,允許值相同)排列的線性表C,并要求利用原表(即A表和B表的)結(jié)點(diǎn)空間存放表C。
5.設(shè)有線性表A=(a1,a2,...,am)和B=(b1,b2,...,bn).試寫合并A、B為線性表C的算法,
使得:
(a1,b1,...,am,bm,bm1,bn)當(dāng)mn;C=
(a1,b1,...,an,bn,an1,...,am)當(dāng)mn;
假設(shè)A、B均以單鏈表為存儲結(jié)構(gòu)(并且m、n顯示保存)。要求C也以單鏈表為存儲結(jié)構(gòu)并利用單鏈表A、B的結(jié)點(diǎn)空間。
6,設(shè)線性表存放在向量A[arrsize]的前elenum分量中,且遞增有序。試寫一算法,將X插入到線性表的適當(dāng)位置上,以保持線性表的有序性,并且分析算法的時(shí)間復(fù)雜性。
7.已知單鏈表L中的結(jié)點(diǎn)是按值非遞減有序排列的,試寫一算法將值為x的結(jié)點(diǎn)插入表L中,使得
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理分期購車合同樣本
- 倉儲委托經(jīng)營合同標(biāo)準(zhǔn)文本
- 借款質(zhì)押保證合同樣本
- 住宅市政施工合同樣本
- 農(nóng)村轉(zhuǎn)讓自建房合同樣本
- 危重癥患者的護(hù)理風(fēng)險(xiǎn)評估
- 光伏房頂租用合同樣本
- 農(nóng)村機(jī)房維護(hù)合同樣本
- 傳單宣傳合同樣本樣本
- 兼職社保合同樣本
- 重慶大轟炸優(yōu)秀課件
- 專題01《水銀花開的夜晚》 高考語文二輪復(fù)習(xí)
- 外貿(mào)客戶報(bào)價(jià)單中英文格式模板
- 中藥學(xué)中藥性味歸經(jīng)功效歸納
- 專業(yè)技術(shù)人員職務(wù)聘任書
- JJF 1338-2012相控陣超聲探傷儀校準(zhǔn)規(guī)范
- GB/T 13911-1992金屬鍍覆和化學(xué)處理表示方法
- GB/T 13452.2-2008色漆和清漆漆膜厚度的測定
- 【泉州南音傳承與發(fā)展研究(論文7200字)】
- 《馬克思主義發(fā)展史》第五章 馬克思列寧主義在蘇聯(lián)的發(fā)展及曲折
- 現(xiàn)代漢語詞匯學(xué)精選課件
評論
0/150
提交評論