黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁考試吧論壇Exam8視線考試商城網絡課程模擬考試考友錄實用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓 自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托福考試
托業考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業培訓
社會工作者
銀行從業
教師資格
營養師
保險從業
普 通 話
證券從業
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業水平
衛生資格 執業醫師 執業藥師 執業護士
會計從業資格
基金從業資格
統計從業資格
經濟師
精算師
統計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產評估師
審計師考試
高級會計師
注冊稅務師
國際內審師
理財規劃師
美國注冊會計師
一級建造師
安全工程師
設備監理師
公路監理師
公路造價師
二級建造師
招標師考試
物業管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質量工程師
巖土工程師
造價員考試
注冊計量師
環保工程師
化工工程師
咨詢工程師
結構工程師
城市規劃師
材料員考試
監理工程師
房地產估價
土地估價師
安全評價師
房地產經紀人
投資項目管理師
環境影響評價師
土地登記代理人
繽紛校園 實用文檔 英語學習 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項輔導
軟件水平考試交流互動
軟件水平考試交流互動
您現在的位置: 考試吧 > 軟件水平考試 > 復習資料 > 程序員資料 > 正文

C語言初學者入門知識之結構體3

  前兩個成員項組成數據域,后一個成員項next構成指針域,它是一個指向stu類型結構的指針變量。鏈表的基本操作對鏈表的主要操作有以下幾種:

  1.建立鏈表;

  2.結構的查找與輸出;

  3.插入一個結點;

  4.刪除一個結點;

  下面通過例題來說明這些操作。

  [例7.10]建立一個三個結點的鏈表,存放學生數據。為簡單起見,我們假定學生數據結構中只有學號和年齡兩項。

  可編寫一個建立鏈表的函數creat。程序如下:

  #define NULL 0

  #define TYPE struct stu

  #define LEN sizeof (struct stu)

  struct stu

  {

  int num;

  int age;

  struct stu *next;

  };

  TYPE *creat(int n)

  {

  struct stu *head,*pf,*pb;

  int i;

  for(i=0;i

  {

  pb=(TYPE*) malloc(LEN);

  printf("input Number and Age\n");

  scanf("%d%d",&pb->num,&pb->age);

  if(i==0)

  pf=head=pb;

  else pf->next=pb;

  pb->next=NULL;

  pf=pb;

  }

  return(head);

  }

  在函數外首先用宏定義對三個符號常量作了定義。這里用TYPE表示struct stu,用LEN表示sizeof(struct stu)主要的目的是為了在以下程序內減少書寫并使閱讀更加方便。結構stu定義為外部類型,程序中的各個函數均可使用該定義。

  creat函數用于建立一個有n個結點的鏈表,它是一個指針函數,它返回的指針指向stu結構。在creat函數內定義了三個stu結構的指針變量。head為頭指針,pf 為指向兩相鄰結點的前一結點的指針變量。pb為后一結點的指針變量。在for語句內,用malloc函數建立長度與stu長度相等的空間作為一結點,首地址賦予pb.然后輸入結點數據。如果當前結點為第一結點(i==0),則把pb值 (該結點指針)賦予head和pf。如非第一結點,則把pb值賦予pf 所指結點的指針域成員next.而pb所指結點為當前的最后結點,其指針域賦NULL。再把pb值賦予pf以作下一次循環準備。

  creat函數的形參n,表示所建鏈表的結點數,作為for語句的循環次數。圖7.4表示了creat函數的執行過程。

  [例7.11]寫一個函數,在鏈表中按學號查找該結點。

  TYPE * search (TYPE *head,int n)

  {

  TYPE *p;

  int i;

  p=head;

  while (p->num!=n && p->next!=NULL)

  p=p->next; /* 不是要找的結點后移一步*/

  if (p->num==n) return (p);

  if (p->num!=n&& p->next==NULL)

  printf ("Node %d has not been found!\n",n

  }

  本函數中使用的符號常量TYPE與例7.10的宏定義相同,等于struct stu.函數有兩個形參,head是指向鏈表的指針變量,n為要查找的學號。進入while語句,逐個檢查結點的num成員是否等于n,如果不等于n且指針域不等于NULL(不是最后結點)則后移一個結點,繼續循環。如找到該結點則返回結點指針。如循環結束仍未找到該結點則輸出“未找到”的提示信息。

  [例7.12]寫一個函數,刪除鏈表中的指定結點。刪除一個結點有兩種情況:

  1. 被刪除結點是第一個結點。這種情況只需使head指向第二個結點即可。即head=pb->next。其過程如圖7.5所示。

  2. 被刪結點不是第一個結點,這種情況使被刪結點的前一結點指向被刪結點的后一結點即可。即pf->next=pb->next.

  函數編程如下:

  TYPE * delete(TYPE * head,int num)

  {

  TYPE *pf,*pb;

  if(head==NULL) /*如為空表, 輸出提示信息*/

  {

  printf("\nempty list!\n");

  goto end;

  }

  pb=head;

  while (pb->num!=num && pb->next!=NULL)

  /*當不是要刪除的結點,而且也不是最后一個結點時,繼續循環*/

  {

  pf=pb;pb=pb->next;}/*pf指向當前結點,pb指向下一結點*/

  if(pb->num==num)

  {

  if(pb==head) head=pb->next;

  /*如找到被刪結點,且為第一結點,則使head指向第二個結點,

  否則使pf所指結點的指針指向下一結點*/

  else pf->next=pb->next;

  free(pb);

  printf("The node is deleted\n");}

  else

  printf("The node not been foud!\n");

  end:

  return head;

  }

  函數有兩個形參,head為指向鏈表第一結點的指針變量,num刪結點的學號。 首先判斷鏈表是否為空,為空則不可能有被刪結點。若不為空,則使pb指針指向鏈表的第一個結點。進入while語句后逐個查找被刪結點。找到被刪結點之后再看是否為第一結點,若是則使head指向第二結點(即把第一結點從鏈中刪去),否則使被刪結點的前一結點(pf所指)指向被刪結點的后一結點(被刪結點的指針域所指)。如若循環結束未找到要刪的結點, 則輸出"末找到"的提示信息。最后返回head值。

  [例7.13]寫一個函數,在鏈表中指定位置插入一個結點。在一個鏈表的指定位置插入結點, 要求鏈表本身必須是已按某種規律排好序的。例如,在學生數據鏈表中, 要求學號順序插入一個結點。設被插結點的指針為pi. 可在三種不同情況下插入。

上一頁  1 2 3 4 5 6 下一頁

  相關推薦:

  2012年軟考系統分析師考試60天完美復習計劃

  2012年軟件水平考試網絡工程師章節筆記講義匯總

  2012年上半年軟件水平考試成績查詢匯總

文章責編:renyinan  
看了本文的網友還看了
文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。
主站蜘蛛池模板: 成人在线天堂 | 欧美视频网站免费看 | 午夜精品aaa国产福利 | 日韩中文字幕在线观看 | 亚洲色图天堂 | 91日韩欧美 | 狠狠操天天操夜夜操 | 久久精品成人国产午夜 | 国产一级α片 | 老司机亚洲精品 | 亚洲精品福利 | 一个人看的视频免费高清在线 | 曰曰啪天天拍视频在线 | 国内外成人免费视频 | 亚洲国产成人久久综合野外 | 在线资源视频 | 免费国产成人高清无线看软件 | 激情综合久久 | 亚洲人成在线观看一区二区 | 免费人成大片在线观看播放 | 日日碰狠狠添天天爽 | 午夜精品久久久久久久第一页 | 波多野结衣视频一区二区 | 在线亚洲+欧美+日本专区 | 免费观看一级特黄三大片视频 | 日韩深夜 | 亚洲国产中文在线 | 欧美成人免费高清网站 | 天天操天天干天天干 | 国产一区二区免费播放 | 中文丝袜 | 成人高清在线观看 | 天天躁日日躁狠狠躁综合 | 伊人亚洲综合网 | 一级黄色大片免费观看 | 91精品小视频 | 欧美97久久人人模人人爽人人喊 | 久久狠狠| 在线欧洲成人免费视频 | 欧美一a一片一级一片 | 成人三级网址 |