首頁 - 網(wǎng)校 - 題庫 - 直播 - 雄鷹 - 團(tuán)購 - 書城 - 模考 - 學(xué)習(xí)通 - 導(dǎo)航 - 510 -
首頁考試吧網(wǎng)校題庫直播雄鷹510團(tuán)購書城模考論壇實用文檔作文大全寶寶起名
2014中考
法律碩士
2014高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托�?荚�
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報 關(guān) 員
外 銷 員
價格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會計從業(yè)資格
基金從業(yè)資格
統(tǒng)計從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產(chǎn)評估師
高級經(jīng)濟(jì)師
審計師考試
高級會計師
注冊稅務(wù)師
國際內(nèi)審師
理財規(guī)劃師
美國注冊會計師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
注冊給排水
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀(jì)人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實用文檔
入黨申請
英語學(xué)習(xí)
思想?yún)R報
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂
您現(xiàn)在的位置: 考試吧 > 計算機(jī)等級考試 > 計算機(jī)二級考試 > C語言 > 上機(jī)題庫 > 正文

2014年計算機(jī)二級《C語言》上機(jī)例題精講(26)

考試吧整理了“2014年計算機(jī)二級《C語言》上機(jī)例題精講”,提供給各位考生備考,更多考試資料請持續(xù)關(guān)注考試吧計算機(jī)等級考試頻道!

  查看匯總:2014年計算機(jī)二級《C語言》上機(jī)例題精講匯總熱點文章

  給定程序中已建立一個帶有頭結(jié)點的單向鏈表,鏈表中的各結(jié)點按數(shù)據(jù)域遞增有序鏈接。函數(shù)fun的功能是:刪除鏈表中數(shù)據(jù)域值相同的結(jié)點,使之只保留一個。 請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

  注意:源程序存放在考生文件夾下的BLANK1.C中。

  不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

  給定源程序:

  #include

  #include

  #define N 8

  typedef struct list

  { int data;

  struct list *next;

  } SLIST;

  void fun( SLIST *h)

  { SLIST *p, *q;

  p=h->next;

  if (p!=NULL)

  { q=p->next;

  while(q!=NULL)

  { if (p->data==q->data)

  { p->next=q->next;

  free(___1___);

  q=p->___2___;

  }

  else

  { p=q;

  q=q->___3___;

  }

  }

  }

  }

  SLIST *creatlist(int *a)

  { SLIST *h,*p,*q; int i;

  h=p=(SLIST *)malloc(sizeof(SLIST));

  for(i=0; i

  { q=(SLIST *)malloc(sizeof(SLIST));

  q->data=a[i]; p->next=q; p=q;

  }

  p->next=0;

  return h;

  }

  void outlist(SLIST *h)

  { SLIST *p;

  p=h->next;

  if (p==NULL) printf("\nThe list is NULL!\n");

  else

  { printf("\nHead");

  do { printf("->%d",p->data); p=p->next; } while(p!=NULL);

  printf("->End\n");

  }

  }

  main( )

  { SLIST *head; int a[N]={1,2,2,3,4,4,4,5};

  head=creatlist(a);

  printf("\nThe list before deleting :\n"); outlist(head);

  fun(head);

  printf("\nThe list after deleting :\n"); outlist(head);

  }

  解題思路:

  本題是考察考生對鏈表的操作,主要是解決刪除鏈表中數(shù)據(jù)域值相同的結(jié)點。程序中共有三處要填上適當(dāng)?shù)膬?nèi)容,使程序能運(yùn)行出正確的結(jié)果。

  函數(shù)fun中使用兩個臨時結(jié)構(gòu)指針變量p和q對鏈表進(jìn)行操作。首先p指向鏈表開始的next指針,q指向p的next指針,再利用while循環(huán)語句來判斷指針q是否NULL,如果q指針是指向NULL,那么函數(shù)結(jié)束返回。如果不是NULL,那么就要判斷p和q中data值是否相同,如果值相同,則要

  刪除該結(jié)點,然后繼續(xù)判斷下一結(jié)點值是相同,如果還相同,那么繼續(xù)刪除結(jié)點,直至不相同為止。如果兩個結(jié)點的值不相同,那么p就指向q,q指向q的next指針再繼續(xù)操作上述過程。

  刪除結(jié)點的方法是:先將p的next指針指向q的next指針,再釋放q指針指向的內(nèi)存,最后把

  q指針再指向p的next指針就可以刪除一個鏈表中的結(jié)點了。

  第一處:釋放q指針?biāo)傅膬?nèi)存空間,應(yīng)填q。

  第二處:q指針指向p的next指針,重新完成鏈接,應(yīng)填next。

  第三處:兩個結(jié)點的值不相同,那么q就指向q的next指針,應(yīng)填next。

  ***************************************************

1 2 3 4 下一頁

  相關(guān)推薦:

  2014計算機(jī)二級C語言知識點復(fù)習(xí)匯總

  2014年9月計算機(jī)二級《C語言》模擬試題匯總

  2014年計算機(jī)二級C語言考試上機(jī)沖刺試題及答案集

文章搜索
計算機(jī)等級考試欄目導(dǎo)航
版權(quán)聲明:如果計算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。
Copyright © 2004-2025 考試吧計算機(jī)等級考試網(wǎng) All Rights Reserved  
中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699