結(jié)構(gòu)體鏈表綜合習(xí)題_第1頁
結(jié)構(gòu)體鏈表綜合習(xí)題_第2頁
結(jié)構(gòu)體鏈表綜合習(xí)題_第3頁
結(jié)構(gòu)體鏈表綜合習(xí)題_第4頁
結(jié)構(gòu)體鏈表綜合習(xí)題_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、以下說法中正確的是:以下說法中正確的是: 。A:一個結(jié)構(gòu)只能包含一種數(shù)據(jù)類型:一個結(jié)構(gòu)只能包含一種數(shù)據(jù)類型B:不同結(jié)構(gòu)中的成員不能有相同的成員名:不同結(jié)構(gòu)中的成員不能有相同的成員名C:兩個結(jié)構(gòu)變量不可以進行比較:兩個結(jié)構(gòu)變量不可以進行比較D:關(guān)鍵字:關(guān)鍵字typedef用于定義新的數(shù)據(jù)類型用于定義新的數(shù)據(jù)類型C結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題設(shè)有以下說明,則值為設(shè)有以下說明,則值為210的表達(dá)式是:的表達(dá)式是: 。struct s int a;int *b;int x0=110,120,x1=210,220;struct s x=100,200,*p=x;x0.b=x0;x1.b=x1

2、;A:*p-b B. (+p)-a C. *(p+)-b D.*(+p)-bD結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題struct int x,y;c3= 1,2,2,3;正確的語句是正確的語句是 。A:C2=3,4;B:C2=C1;C:C2=C1-C0;D:if(c1c0)c2=c1;else c2=c0;B結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題已知有如下的結(jié)構(gòu)類型定義和變量聲明:已知有如下的結(jié)構(gòu)類型定義和變量聲明: struct student int num; char name10; stu = 1,”Mary”,*p=&stu;則下列語句錯誤的是則下列語句錯誤的是_A:pr

3、intf(“%d”,stu.num);B:printf(“%d”,(&stu) - num);C:printf(“%d”,&stu - num);D:printf(“%d”,p - num);C結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題已知有結(jié)構(gòu)類型定義:已知有結(jié)構(gòu)類型定義:typedef struct exlong int num; char sex; struct ex *next; student;下列敘述錯誤的是下列敘述錯誤的是_。A. struct ex 是結(jié)構(gòu)類型是結(jié)構(gòu)類型 B. student是結(jié)構(gòu)類型的變量名是結(jié)構(gòu)類型的變量名C. ex可缺省可缺省 D. stud

4、ent不可缺省不可缺省B結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題若要使表達(dá)式若要使表達(dá)式“P+”無語法錯誤,則變量無語法錯誤,則變量P不能聲明為不能聲明為_。A. int P; B. double P; C. int *P; D. structint x;P;D結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題數(shù)組和鏈表都可以用于存儲一組彼此有關(guān)聯(lián)的數(shù)據(jù),以數(shù)組和鏈表都可以用于存儲一組彼此有關(guān)聯(lián)的數(shù)據(jù),以下說法中不正確的是:下說法中不正確的是: A:數(shù)組占用一塊連續(xù)的存儲區(qū)域,鏈表可能占用:數(shù)組占用一塊連續(xù)的存儲區(qū)域,鏈表可能占用 若若干不連續(xù)的存儲區(qū)域干不連續(xù)的存儲區(qū)域B:數(shù)組和鏈表所占用的存儲區(qū)域均

5、不能在程序運行期:數(shù)組和鏈表所占用的存儲區(qū)域均不能在程序運行期間動態(tài)地分配間動態(tài)地分配C:數(shù)組中的數(shù)據(jù)可以隨機存取或順序存取,鏈表中的:數(shù)組中的數(shù)據(jù)可以隨機存取或順序存取,鏈表中的數(shù)據(jù)只能順序存取數(shù)據(jù)只能順序存取D:數(shù)組的長度是固定的,鏈表的長度是不固定的:數(shù)組的長度是固定的,鏈表的長度是不固定的B結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題值為值為6的表達(dá)式為的表達(dá)式為 struct stint n;struct st *next;static struct st a3=5,&a1,7,&a2,9,0,*p;p=&a0;A)p+-n B)p-n+ C)(*p).n+ D)

6、 +p-nD結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題對以下結(jié)構(gòu)體變量對以下結(jié)構(gòu)體變量example中成員中成員x的引的引用正確的是用正確的是 struct int x ; int y ; example , *p=&example;A)(*p).example. x B) (*p). x C) p-example D) p.example. xB結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題對于下列程序段:對于下列程序段: struct SD int x; float y; ; struct SD a3=1001, 3.5,1002,4.5,1003,

7、4.0, *p; p=a;則下面不正確的使用是則下面不正確的使用是_。A. (+p)-x B. p+ C. (*p).y D. p=&a0.xD結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題若有以下程序段:若有以下程序段: struct SD int x; int *r; ; int a=1,b=2,c=3; struct SD s3=1001,&a,1002,&b,1003,&c; main() struct SD *p; p=s; 則以下表達(dá)式中值為則以下表達(dá)式中值為2的是的是_。A. *(+p)- r B. *(p+)- rC. (*p).r D. (p+)-

8、rA結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題有以下結(jié)構(gòu)體類型的說明和變量定義,并給出圖示,有以下結(jié)構(gòu)體類型的說明和變量定義,并給出圖示,則選項中不能把結(jié)點則選項中不能把結(jié)點b連接到連接到a之后的語句是之后的語句是_。 data next data next a b p q struct ND char data; struct ND *next; a,b,*p=&a,*q=&b;A.a.next=q; B. p.next=&b;C. p-next=&b; D. (*p).next=q;B結(jié)構(gòu)體、鏈表綜合習(xí)題結(jié)構(gòu)體、鏈表綜合習(xí)題設(shè)有定義如下:設(shè)有定義如下:type

9、def structint x,y;POINT;typedef enum RED,YELLOW,BLUE,GREENCOLOR;struct POINT xy;COLOR c;pixel,*p=&pixel;以下對變量以下對變量pixel的賦值操作中正確的是的賦值操作中正確的是 。A:pixel= 1,2,BLUE;B:scanf(“%d%d%d%d”,p-xy.x,p-xy.y,&pixel.c);C:p-xy.x=1;p-xy.y=2;p-c=BLUE;D:scanf(“%d%d”,&pixel.xy);pixel.color=2;C設(shè)鏈表上的結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下

10、:設(shè)鏈表上的結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:struct node int x; struct node *next; ; 函數(shù)函數(shù)create的功能是:創(chuàng)建一個有序的鏈表(結(jié)點中的功能是:創(chuàng)建一個有序的鏈表(結(jié)點中x的值按升序排列),鏈表中結(jié)點的個數(shù)為參數(shù)的值按升序排列),鏈表中結(jié)點的個數(shù)為參數(shù)n的值,的值,函數(shù)返回該有序鏈表的頭指針。算法思想如下:每產(chǎn)函數(shù)返回該有序鏈表的頭指針。算法思想如下:每產(chǎn)生一個新結(jié)點,插入到鏈表中的恰當(dāng)位置,使得插入生一個新結(jié)點,插入到鏈表中的恰當(dāng)位置,使得插入新結(jié)點后的鏈表仍然保持有序。新結(jié)點后的鏈表仍然保持有序。 (27) creat(int n) struct no

11、de *p, *p1, *p2, *h=NULL;int i=0;if(nx);p-next=NULL;if(h= =NULL) (29) ;else p1=p2=h; while(p2&p-x=p2-x)p1=p2;p2=p2-next; if( p2= =h) (30);h=p; elsep-next=p2;p1-next=p; i+; return h;struct node *inext=h已知某鏈表中結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:已知某鏈表中結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:struct nodeint x; struct node *next;;函數(shù)函數(shù)find_del功能是:在參數(shù)功能是

12、:在參數(shù)head指向的鏈表中指向的鏈表中查找并刪除查找并刪除x值最大的結(jié)點,如有多個相同的值最大的結(jié)點,如有多個相同的x值值最大的結(jié)點,刪除第一個結(jié)點,保存該結(jié)點的地最大的結(jié)點,刪除第一個結(jié)點,保存該結(jié)點的地址到址到pm指向的指針變量中,函數(shù)返回鏈表首結(jié)指向的指針變量中,函數(shù)返回鏈表首結(jié)點的指針。點的指針。struct node *find_del(struct node *head,struct node *pm)stuct node *p1,*p2,*pmax,*pre; if(head= =NULL) return NULL;pmax=(1) ;p2=p1=pmax; while(p1)

13、 if(p1-x (2) ) pre=p2;pmax=p1; p2=p1;p1=p1-next; if(pmax= =head)head=pmax-next; else (3) =pmax-next; (4) =pmax; return head; 1 head2 pmax-x3 pre-next4 *pm設(shè)鏈表上的結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:設(shè)鏈表上的結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:struct node int x; struct node *next;假設(shè)已經(jīng)建立了一個鏈表,假設(shè)已經(jīng)建立了一個鏈表,h為鏈?zhǔn)字羔槨:癁殒準(zhǔn)字羔?。函?shù)數(shù)deladd的功能是:若鏈表上能找到結(jié)點的的功能是:若鏈表上能找到結(jié)

14、點的x值為值為value,則從鏈表上刪除該結(jié)點(假定,則從鏈表上刪除該結(jié)點(假定鏈表上的各個結(jié)點的值是不同的);否則構(gòu)鏈表上的各個結(jié)點的值是不同的);否則構(gòu)造一個新結(jié)點,其值為造一個新結(jié)點,其值為value,并將新結(jié)點,并將新結(jié)點插入鏈尾。該函數(shù)要求返回新鏈表的首指針。插入鏈尾。該函數(shù)要求返回新鏈表的首指針。struct node *deladd(struct node *h,int value) struct node *p1, *p2;int flag=0;p1=p2=h;while(p1&flag= =0)if(p1-x= =value) flag=1;if(p1= =h) h=

15、 (1) ;free(p1);else p2-next= (2) ; free(p1); else p2=p1;p1= (3) ;if(flag= =0) p1=(struct node *)malloc(sizeof(struct node);p1-x=value;p1-next=0;if(h= =0)h=p1;else (4) ;return h;(1)h-next (2)p1-next(3)p1-next (4)p2-next=p1顛倒鏈表的鏈接順序顛倒鏈表的鏈接順序struct nodeint data; struct node *next; ;reverse (struct node

16、 *h) struct node *p,*v1,*v2; _; v1=NULL; while(v2!=NULL) _; v2-next=v1; v1=v2; v2=p; h=v1; return h; v2=hP=v2-next已知某鏈表中結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:已知某鏈表中結(jié)點的數(shù)據(jù)結(jié)構(gòu)定義如下:#includestruct nodeint x; struct node *next;函數(shù)函數(shù)loop的功能是:根據(jù)的功能是:根據(jù)dir的值循環(huán)移位的值循環(huán)移位head指向的鏈指向的鏈表中的所有結(jié)點,當(dāng)表中的所有結(jié)點,當(dāng)dir為正數(shù)時實現(xiàn)循環(huán)右移一次,為正數(shù)時實現(xiàn)循環(huán)右移一次,否則循環(huán)左移一次。函

17、數(shù)返回鏈表首結(jié)點的指針。否則循環(huán)左移一次。函數(shù)返回鏈表首結(jié)點的指針。例如,移位前的鏈表數(shù)據(jù):例如,移位前的鏈表數(shù)據(jù):head-1-3-5-4, 移一次后的鏈表數(shù)據(jù):移一次后的鏈表數(shù)據(jù):head-4-1-3-5。算法提示:循環(huán)右移時,將鏈表最后一個結(jié)點刪除,再將算法提示:循環(huán)右移時,將鏈表最后一個結(jié)點刪除,再將其插入到鏈表首部;循環(huán)左移時,將鏈表第一個結(jié)點刪其插入到鏈表首部;循環(huán)左移時,將鏈表第一個結(jié)點刪除,再將其連接到鏈表尾部。除,再將其連接到鏈表尾部。struct node *loop(struct node *head,int dir)struct node *p1,*p2; p1=hea

18、d; if(p1= =NULL|p1-next= =NULL)return head; if(dir=0) while(p1-next) p2=p1;p1=p1-next; _(1)_=NULL; p1-next=_(2)_; head=p1; else head=_(3)_; p2=head; while(p2-next)p2=p2-next; _(4)_; p1-next=NULL; return head;(1)p2-next(2)head(3)p1-next(4)p2-next=p1.以下程序中函數(shù)以下程序中函數(shù)padd的功能是:調(diào)整的功能是:調(diào)整pa指向的鏈表中各結(jié)點的位置,使得所指

19、向的鏈表中各結(jié)點的位置,使得所有有x值為偶數(shù)的結(jié)點出現(xiàn)在鏈表的前半部,所有值為偶數(shù)的結(jié)點出現(xiàn)在鏈表的前半部,所有x值為奇數(shù)的結(jié)點出現(xiàn)在鏈值為奇數(shù)的結(jié)點出現(xiàn)在鏈表的后半部。表的后半部。#includetypedef struct p int x; struct p *next; PNODE;PNODE *padd(PNODE *pa)PNODE *p1, *p2,*p; p1=p2=pa; while(p1) if(p1-x%2= =0& (1) ) p=p1; p1=p1-next; (2) =p1; p-next=pa;(3) ; else p2=p1;p1=p1-next; ret

20、urn pa;main()PNODE a10=1,2,3,4,5,6,7,8,9,10,*ha=a,*p; int i ; for(i=0;i,p-x);p=p-next;(1)p1!=pa(2)p2-next(3)pa=p(4)NULL.下面程序用來從鍵盤上讀入一行字符,并按輸入順序建立一個鏈下面程序用來從鍵盤上讀入一行字符,并按輸入順序建立一個鏈?zhǔn)浇Y(jié)點序列,新添加的結(jié)點存入當(dāng)前剛讀入的字符,讀入完成后,式結(jié)點序列,新添加的結(jié)點存入當(dāng)前剛讀入的字符,讀入完成后,再按該鏈?zhǔn)叫蛄械姆聪蝽樞蜉敵鲞@一行字符,最后,釋放全部結(jié)再按該鏈?zhǔn)叫蛄械姆聪蝽樞蜉敵鲞@一行字符,最后,釋放全部結(jié)點空間。請在點空間。

21、請在 處填入正確內(nèi)容。處填入正確內(nèi)容。 #define getnode(type) (type*)malloc (sizeof(type) #define null 0 #include “stdio.h” main()struct node char info; struct node *link; *top,*p; char c; top= (1) ; while(c=getchar()!=n) p=getnode( (2) ); p-info=c; p-link= (3) ; top= (4) ; while (top!=null) p= (5) ; top= (6) ; putchar(p-info);free(p);(1)null(2)struct node(3)top(4)p(5)top(6)top-link.設(shè)鏈表上的每個結(jié)點的數(shù)據(jù)結(jié)構(gòu)為設(shè)鏈表上的每個結(jié)點的數(shù)據(jù)結(jié)構(gòu)為: struct node int data; struct node *next; 假設(shè)已建立了一條鏈表假設(shè)已建立了一條鏈表, 鏈表上第一個結(jié)點的值為該鏈表上結(jié)點的鏈表上第一個結(jié)點的值為該鏈表上結(jié)點的個數(shù)個數(shù). 下面的函數(shù)要刪除鏈上具有相同值的所有結(jié)點下面的函數(shù)要刪除鏈上具有相同值的所有結(jié)點, 使得結(jié)點上使得結(jié)點上的數(shù)值各不相同的數(shù)值各不相同.struct node *delsamen

溫馨提示

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

評論

0/150

提交評論