精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
結(jié)構與聯(lián)合
結(jié)構與聯(lián)合
 更新時間:2008-8-19 14:07:17  點擊數(shù):572
【字體: 字體顏色
 
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;}
   if(pb->num==num)
   { 
      if(pb==head) head=pb->next;
      else pf->next=pb->next;
      printf("The node is deleted\n"); 
   }
   else
      free(pb);
   printf("The node not been found!\n"); 

   end:
   return head;
}

TYPE * insert(TYPE * head,TYPE * pi)
{
   TYPE *pb ,*pf;
   pb=head;
   if(head==NULL)
   { 
      head=pi;
      pi->next=NULL; 
   }
   else
   {
      while((pi->num>pb->num)&&(pb->next!=NULL))
      { pf=pb;
      pb=pb->next; }
      if(pi->num<=pb->num)
      { 
         if(head==pb) head=pi;
         else pf->next=pi;
         pi->next=pb; 
      }
      else
      { 
         pb->next=pi;
         pi->next=NULL; 
      }
   }
   return head;
}

void print(TYPE * head)
{
   printf("Number\t\tAge\n");
   while(head!=NULL)
   {
      printf("%d\t\t%d\n",head->num,head->age);
      head=head->next;
   }
}
main()
{
   TYPE * head,*pnum;
   int n,num;
   printf("input number of node: ");
   scanf("%d",&n);
   head=creat(n);
   print(head);
   printf("Input the deleted number: ");
   scanf("%d",&num);
   head=delete(head,num);
   print(head);
   printf("Input the inserted number and age: ");
   pnum=(TYPE *)malloc(LEN);
   scanf("%d%d",&pnum->num,&pnum->age);
   head=insert(head,pnum);
   print(head);
}
  本例中,print函數(shù)用于輸出鏈表中各個結(jié)點數(shù)據(jù)域值?男尾蝖ead的初值指向鏈表第一個結(jié)點。在while語句中,輸出結(jié)點值后,head值被改變,指向下一結(jié)點。若保留頭指針head, 則應另設一個指針變量,把head值賦予它,再用它來替代head。在main函數(shù)中,n為建立結(jié)點的數(shù)目, num為待刪結(jié)點的數(shù)據(jù)域值;head為指向鏈表的頭指針,pnum為指向待插結(jié)點的指針。 main函數(shù)中各行的意義是:
第六行輸入所建鏈表的結(jié)點數(shù);
第七行調(diào)creat函數(shù)建立鏈表并把頭指針返回給head;
第八行調(diào)print函數(shù)輸出鏈表;
第十行輸入待刪結(jié)點的學號;
第十一行調(diào)delete函數(shù)刪除一個結(jié)點;
第十二行調(diào)print函數(shù)輸出鏈表;
第十四行調(diào)malloc函數(shù)分配一個結(jié)點的內(nèi)存空間, 并把其地址賦予pnum;
第十五行輸入待插入結(jié)點的數(shù)據(jù)域值;
第十六行調(diào)insert函數(shù)插入pnum所指的結(jié)點;
第十七行再次調(diào)print函數(shù)輸出鏈表。
  從運行結(jié)果看,首先建立起3個結(jié)點的鏈表,并輸出其值;再刪103號結(jié)點,只剩下105,108號結(jié)點;又輸入106號結(jié)點數(shù)據(jù), 插入后鏈表中的結(jié)點為105,106,108。聯(lián)合“聯(lián)合”也是一種構造類型的數(shù)據(jù)結(jié)構。 在一個“聯(lián)合”內(nèi)可以定義多種不同的數(shù)據(jù)類型, 一個被說明為該“聯(lián)合”類型的變量中,允許裝入該“聯(lián)合”所定義的任何一種數(shù)據(jù)。 這在前面的各種數(shù)據(jù)類型中都是辦不到的。例如, 定義為整型的變量只能裝入整型數(shù)據(jù),定義為實型的變量只能賦予實型數(shù)據(jù)。
  在實際問題中有很多這樣的例子。例如在學校的教師和學生中填寫以下表格: 姓 名 年 齡 職 業(yè) 單位 “職業(yè)”一項可分為“教師”和“學生”兩類。對“單位”一項學生應填入班級編號,教師應填入某系某教研室。 班級可用整型量表示,教研室只能用字符類型。要求把這兩種類型不同的數(shù)據(jù)都填入“單位”這個變量中, 就必須把“單位”定義為包含整型和字符型數(shù)組這兩種類型的“聯(lián)合”。 
  “聯(lián)合” 與“結(jié)構”有一些相似之處。但兩者有本質(zhì)上的不同。在結(jié)構中各成員有各自的內(nèi)存空間, 一個結(jié)構變量的總長度是各成員長度之和。而在“聯(lián)合”中,各成員共享一段內(nèi)存空間, 一個聯(lián)合變量的長度等于各成員中最長的長度。應該說明的是, 這里所謂的共享不是指把多個成員同時裝入一個聯(lián)合變量內(nèi), 而是指該聯(lián)合變量可被賦予任一成員值,但每次只能賦一種值, 賦入新值則沖去舊值。如前面介紹的“單位”變量, 如定義為一個可裝入“班級”或“教研室”的聯(lián)合后,就允許賦予整型值(班級)或字符串(教研室)。要么賦予整型值,要么賦予字符串,不能把兩者同時賦予它。聯(lián)合類型的定義和聯(lián)合變量的說明一個聯(lián)合類型必須經(jīng)過定義之后, 才能把變量說明為該聯(lián)合類型。

  • 上一篇: 可編程模擬器件原理與開發(fā)
  • 下一篇: 與蜂共舞—ZigBee技術一瞥
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    石景山区| 桃源县| 榕江县| 沛县| 延长县| 甘肃省| 宜昌市| 富平县| 柳江县| 来安县| 临泽县| 宁武县| 溆浦县| 平阳县| 东方市| 修武县| 宽甸| 孝昌县| 阿荣旗| 库车县| 赤峰市| SHOW| 灵台县| 肇源县| 甘孜县| 沾益县| 客服| 北宁市| 上犹县| 将乐县| 龙泉市| 崇左市| 醴陵市| 西乌| 黄梅县| 高碑店市| 新安县| 若尔盖县| 泉州市| 山东| 成武县|