欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語言鏈表的概念

      時間:2019-05-14 21:14:46下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《C語言鏈表的概念》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《C語言鏈表的概念》。

      第一篇:C語言鏈表的概念

      C語言鏈表的概念

      在*中采用了動態(tài)分配的辦法為一個結(jié)構(gòu)分配內(nèi)存空間。每一次分配一塊空間可用來存放一個學(xué)生的數(shù)據(jù),我們可稱之為一個結(jié)點。有多少個學(xué)生就應(yīng)該申請分配多少塊內(nèi)存空間,也就是說要建立多少個結(jié)點。當(dāng)然用結(jié)構(gòu)數(shù)組也可以完成上述工作,但如果預(yù)先不能準(zhǔn)確把握學(xué)生人數(shù),也現(xiàn)金網(wǎng)96y.org就無法確定數(shù)組大小。而且當(dāng)學(xué)生留級、退學(xué)之后也不能把該元素占用的空間從數(shù)組中釋放出來。

      用動態(tài)存儲的方法可以很好地解決這些問題。有一個學(xué)生就分配一個結(jié)點,無須預(yù)先確定學(xué)生的準(zhǔn)確人數(shù),某學(xué)生退學(xué),可刪去該結(jié)點,并釋放該結(jié)點占用的存儲空間。從而節(jié)約了寶貴的內(nèi)存資源。另一方面,用數(shù)組的方法必須占用一塊連續(xù)的內(nèi)存區(qū)域。而使用動態(tài)分配時,每個結(jié)點之間可以是不連續(xù)的(結(jié)點內(nèi)是連續(xù)的)。結(jié)點之間的聯(lián)系可以用指針實現(xiàn)。即在結(jié)點結(jié)構(gòu)中定義一個成員項用來存放下一結(jié)點的首地址,這個用于存放地址的成員,常把它稱為指針域。

      可在第一個結(jié)點的指針域內(nèi)存入第二個結(jié)點的首地址,在第二個結(jié)點的指針域內(nèi)又存放第三個結(jié)點的首地址,如此串連下去直到最后一個結(jié)點。最后一個結(jié)點因無后續(xù)結(jié)點連接,其指針域可賦為0。這樣一種連接方式,在數(shù)據(jù)結(jié)構(gòu)中稱為鏈表。

      下圖為最一簡單鏈表的示意圖。

      圖中,第0個結(jié)點稱為頭結(jié)點,它存放有第一個結(jié)點的首地址,它沒有數(shù)據(jù),只是一個指針變量。以下的每個結(jié)點都分為兩個域,一個是數(shù)據(jù)域,存放各種實際的數(shù)據(jù),如學(xué)號num,姓名name,性別sex和成績score等。另一個域為指針域,存放下一結(jié)點的首地址。鏈表中的每一個結(jié)點都是同一種結(jié)構(gòu)類型。

      例如,一個存放學(xué)生學(xué)號和成績的結(jié)點應(yīng)為以下結(jié)構(gòu):

      struct stu{

      int num;

      int score;

      struct stu *next;

      } 前兩個成員項博彩娛樂棋牌q07i5.org組成數(shù)據(jù)域,后一個成員項next構(gòu)成指針域,它是一個指向stu類型結(jié)構(gòu)的指針變量。

      鏈表的基本操作對鏈表的主要操作有以下幾種:

      建立鏈表;

      結(jié)構(gòu)的查找與輸出;

      插入一個結(jié)點;

      刪除一個結(jié)點。

      第二篇:C語言用指針和鏈表讀寫文件

      #include

      #include

      #include

      #include

      #define MAXLEN_OF_KEYWORD 50

      #define MAXLEN_OF_KEYWORDTYPE 30

      char i,ch[5];

      struct KeyWordBox

      {

      char Name[MAXLEN_OF_KEYWORD];

      intId;

      char Type[MAXLEN_OF_KEYWORDTYPE];//該單詞的類型struct KeyWordBox *next;//指針

      };

      void write();

      void read();

      void main()

      {

      write();

      read();

      }

      void write()

      {

      char *FileName=“FileName.txt”;

      KeyWordBox transport;

      memset(&transport,0,sizeof(struct KeyWordBox));

      FILE *out=NULL;

      FILE *test=NULL;

      test=fopen(FileName,“a”);

      if(test==NULL)

      {

      out=fopen(FileName,“w”);

      printf(“ 1 continue,0 exitn”);

      i=getchar();

      while(i=='1')

      {

      printf(“請輸入關(guān)鍵字n”);

      scanf(“%s”,transport.Name);

      printf(“請輸入IDn”);

      scanf(“%d”,&transport.Id);

      printf(“請輸入Typen”);

      scanf(“%s”,transport.Type);

      fwrite(&transport,sizeof(struct KeyWordBox),1,out);

      printf(“ 1 continue,0 exitn”);

      scanf(“%c”,&i);

      }

      fclose(out);

      }

      else

      {

      out=fopen(FileName,“a”);

      printf(“ 1 continue,0 exitn”);

      scanf(“%c”,&ch);

      //i=getchar();

      //while(i=='1')

      while(strcmp(ch,“1”)==0)

      {

      printf(“請輸入關(guān)鍵字n”);

      scanf(“%s”,transport.Name);

      printf(“請輸入IDn”);

      scanf(“%d”,&transport.Id);

      printf(“請輸入Typen”);

      scanf(“%s”,transport.Type);

      fwrite(&transport,sizeof(KeyWordBox),1,out);

      printf(“ 1 continue,0 exit.n”);

      scanf(“%s”,ch);

      }

      fclose(out);

      }

      }

      void read()

      {

      char *FileName=“FileName.txt”;

      KeyWordBox *Head=NULL,*q=NULL;

      KeyWordBox *Body=NULL;

      KeyWordBox *p=NULL;

      FILE *in=NULL;

      in=fopen(FileName,“r”);

      if(in==NULL)

      {

      printf(“can't open the file!n”);

      exit(0);

      }

      else

      {

      Head=(struct KeyWordBox*)malloc(sizeof(struct KeyWordBox));Head->next =NULL;

      }}q=Head;while(!feof(in)){Body=(struct KeyWordBox*)malloc(sizeof(struct KeyWordBox));Body->next=NULL;fread(Body,sizeof(struct KeyWordBox),1,in);if(feof(in)){q->next=NULL;break;}q->next=Body;q=Body;printf(“%st%dt%sn”,Body->Name,Body->Id,Body->Type);} fclose(in);p=Head->next;while(p!=NULL){printf(“%st%dt%sn”,p->Name,p->Id,p->Type);p=p->next;}

      第三篇:C語言概念題

      2、下列敘述中錯誤的是_______。(標(biāo)準(zhǔn)答案:A)(A)一個C語言程序只能實現(xiàn)一種算法

      (B)一個C函數(shù)可以單獨作為一個C程序文件存在(C)C程序可以由一個或多個函數(shù)組成(D)C程序可以由多個程序文件組成

      4、以下敘述中錯誤的是_____________。(標(biāo)準(zhǔn)答案:A)

      (A)C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機器指令(B)C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序

      (C)用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中(D)C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機器指令文件

      13、以下敘述中錯誤的是A(A)使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題(B)C語言是一種結(jié)構(gòu)化程序設(shè)計語言(C)結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成(D)結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法

      18、以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是

      (A)一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成(B)有三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題(C)在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的(D)結(jié)構(gòu)化程序使用goto語句會很便捷 標(biāo)準(zhǔn)答案:C

      19、對于一個正常運行的C程序,以下敘述中正確的是C(A)程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束(B)程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束(C)程序的執(zhí)行總是從main函數(shù)開始

      (D)程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

      33、以下選項中關(guān)于程序模塊化的敘述錯誤的是

      (A)把程序分成若干相對獨立的模塊,可便于編碼和測試

      (B)可采用自頂向下、逐步細(xì)化的設(shè)計方法把若干獨立模塊組裝成所要求的程序(C)把采用分成若干相對獨立、功能單一的模塊,可便于重復(fù)使用這些模塊

      (D)可采用自頂向上、逐步細(xì)化的設(shè)計方法把若干獨立模塊組裝成所要求的程序 標(biāo)準(zhǔn)答案:D

      34、以下敘述中正確的是

      (A)C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面(B)C程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個語句(C)用C語言編寫的程序只能放在一個程序文件中(D)C程序書寫格式自由,一個語句可以寫在多行上 標(biāo)準(zhǔn)答案:D

      36、以下關(guān)于C語言數(shù)據(jù)類型使用的敘述中錯誤的是(A)若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型(B)若要保存帶有多位小數(shù)的數(shù)據(jù),可使用雙精度類型(C)整數(shù)類型表示的自然數(shù)是準(zhǔn)確無誤差的

      (D)若要處理“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型

      38、以下敘述中錯誤的是

      (A)C程序在運行過程中所有計算都以二進(jìn)制方式進(jìn)行(B)C程序在運行過程中所有計算都以十進(jìn)制方式進(jìn)行

      (C)C程序中字符變量存放的是字符的ASCII值(D)所有C程序都需要編譯鏈接無誤后才能運行

      第四篇:單鏈表實驗報告

      《數(shù)據(jù)結(jié)構(gòu)》實驗報告二

      分校:

      學(xué)號:

      日期:

      班級:

      姓名:

      程序名: L2311.CPP

      一、上機實驗的問題和要求:

      單鏈表的查找、插入與刪除。設(shè)計算法,實現(xiàn)線性結(jié)構(gòu)上的單鏈表的產(chǎn)生以及元素的查找、插入與刪除。具體實現(xiàn)要求:

      1.從鍵盤輸入20個整數(shù),產(chǎn)生帶表頭的單鏈表,并輸入結(jié)點值。

      2.從鍵盤輸入1個整數(shù),在單鏈表中查找該結(jié)點。若找到,則顯示“找到了”;否則,則顯示“找不到”。

      3.從鍵盤輸入2個整數(shù),一個表示欲插入的位置i,另一個表示欲插入的數(shù)值x,將x插入在對應(yīng)位置上,輸出單鏈表所有結(jié)點值,觀察輸出結(jié)果。4.從鍵盤輸入1個整數(shù),表示欲刪除結(jié)點的位置,輸出單鏈表所有結(jié)點值,觀察輸出結(jié)果。5.將單鏈表中值重復(fù)的結(jié)點刪除,使所得的結(jié)果表中個結(jié)點值均不相同,輸出單鏈表所有結(jié)點值,觀察輸出結(jié)果。

      6.刪除其中所有數(shù)據(jù)值為偶數(shù)的結(jié)點,輸出單鏈表所有結(jié)點值,觀察輸出結(jié)果。

      7.把單鏈表變成帶表頭結(jié)點的循環(huán)鏈表,輸出循環(huán)單鏈表所有結(jié)點值,觀察輸出結(jié)果。8.(★)將單鏈表分解成兩個單鏈表A和B,使A鏈表中含有原鏈表中序號為奇數(shù)的元素,而B鏈表中含有原鏈表中序號為偶數(shù)的元素,且保持原來的相對順序,分別輸出單鏈表A和單鏈表B的所有結(jié)點值,觀察輸出結(jié)果。

      二、程序設(shè)計的基本思想,原理和算法描述:

      (包括程序的結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),輸入/輸出設(shè)計,符號名說明等)

      三、源程序及注釋:

      四、運行輸出結(jié)果:

      五、調(diào)試和運行程序過程中產(chǎn)生的問題及采取的措施:

      六、對算法的程序的討論、分析,改進(jìn)設(shè)想,其它經(jīng)驗教訓(xùn):

      七、對實驗方式、組織、設(shè)備、題目的意見和建議:

      第五篇:職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文)

      #include #include #include int saveflag=0;

      /* 單鏈表內(nèi)容有無發(fā)生改變,是否需要存盤的標(biāo)志變量 */ struct employee {

      };

      typedef struct Node {

      void InitList(LinkList *head)

      /*將單鏈表初始化為空。動態(tài)生成一個頭結(jié)點,并將頭結(jié)點的指針域置為空*/ {

      }

      ListNode *Locatenum(LinkList head,char find[])

      //通過職工工號查找,返回定位指針。{ LinkList p;if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL)

      /*為頭結(jié)點分配一 printf(“系統(tǒng)分配存儲空間失敗!n”);個存儲空間*/ exit(-1);(*head)->next=NULL;

      /*將頭結(jié)點的指針域置為空*/ struct employee data;struct Node *next;char num[10];

      /* 工號 */ char name[15];

      /* 姓名 */ char sex[7];

      /* 性別 */ int age;

      /* 年齡 */ char education[15];

      /* 學(xué)歷 */ int salary;

      /* 工資 */ char phone[20];

      /* 電話號碼 */ char address[30];

      /* 住址 */ }ListNode,*LinkList;

      } p=head->next;if(!p)

      //如果職工信息記錄為空,返回NULL。

      {

      } return NULL;if(strcmp(p->data.num,find)==0)return p;p=p->next;return NULL;while(p)ListNode *Locatename(LinkList head,char find[])

      //通過職工姓名查找,返回定位指針。{

      }

      ListNode *Locatesalary(LinkList head,int salary)

      //通過職工工資查找,返回定位指針。{

      LinkList p;p=head->next;if(!p)

      //如果職工信息記錄為空,返回NULL。

      return NULL;while(p){ LinkList p;p=head->next;if(!p)

      //如果職工信息記錄為空,返回NULL。

      {

      } return NULL;if(strcmp(p->data.name,find)==0)return p;p=p->next;return NULL;while(p)

      }

      } if(p->data.salary==salary)return p;p=p->next;return NULL;void Nofind(){ }

      void Modify(LinkList L)

      //修改功能。{

      ListNode *p;

      char find[20];

      if(!L->next)

      {

      printf(“請你輸入要修改的職工工號:”);

      scanf(“%s”,find);

      p=Locatenum(L,find);

      if(p)

      {

      printf(“請你輸入新的工號(原來是%s):”,p->data.num);

      scanf(“%s”,p->data.num);

      getchar();

      printf(“n”);

      printf(“請你輸入新的姓名(原來是%s):”,p->data.name);

      scanf(“%s”,p->data.name);

      getchar();

      printf(“n”);

      printf(“n***提示***:沒有資料可以修改!n”);

      return;printf(“n***提示***:沒有找到該職工!n”);

      }

      printf(“請你輸入新的性別(原來是%s):”,p->data.sex);

      scanf(“%s”,p->data.sex);

      getchar();

      printf(“n”);

      printf(“請你輸入新的年齡(原來是%d):”,p->data.age);

      scanf(“%d”,&p->data.age);

      printf(“n”);

      printf(“請你輸入新的學(xué)歷(原來是%s):”,p->data.education);

      scanf(“%s”,p->data.education);

      getchar();

      printf(“n”);

      printf(“請你輸入新的工資(原來是%d):”,p->data.salary);

      scanf(“%d”,&p->data.salary);

      printf(“n”);

      printf(“請你輸入新的電話(原來是%s):”,p->data.phone);

      scanf(“%s”,p->data.phone);

      getchar();

      printf(“n”);

      printf(“請你輸入新的住址(原來是%s):”,p->data.address);

      scanf(“%s”,p->data.address);

      getchar();

      printf(“n”);

      printf(“n***提示***:資料修改成功!n”);

      saveflag=1;

      }

      else

      Nofind();//if(p)結(jié)束

      } //void Modify(LinkList L)

      //修改功能結(jié)束 void Add(LinkList head)

      /* 錄入職工信息 */ {

      system(“cls”);ListNode *p,*r,*s;

      /* 實現(xiàn)添加操作的臨時的結(jié)構(gòu)體指針變量 */ int sign;

      /* 標(biāo)記重復(fù)工號的變量 */ char num[10];r=head;s=head->next;

      /* 鏈表沒有節(jié)點時,s=NULL;鏈表有節(jié)點時,指向while(r->next!=NULL)/* 如果存在后繼結(jié)點時,r指針后移一個 */ r=r->next;

      /* 將指針移至于鏈表最末尾,準(zhǔn)備添加記錄 */ printf(“輸入‘#’將退出職工信息錄入,退回至主菜單!nn”);while(1){

      printf(“(PS:職工號為‘#’即退出錄入功能)nn”);printf(“請輸入職工號:”);fflush(stdin);

      //清除緩沖區(qū)。gets(num);if(strcmp(num,“#”)==0)/* 輸入‘0’,跳出while(1),即跳出Add()函數(shù) */ break;s=head->next;

      /* 每次從第一個節(jié)點開始找,看num是否重

      while(s){

      if(strcmp(s->data.num,num)==0){

      } s=s->next;printf(“***提示***n工號為:‘%s’的職工信息已經(jīng)存在!printf(”若要修改請按‘4’,放棄請按‘0’!n“);scanf(”%d“,&sign);if(sign==4)

      Modify(head);return;else 第一個職工節(jié)點 */ 復(fù)。*/ n”,num);}//while(s)if((p=(LinkList)malloc(sizeof(ListNode)))==NULL)//生成沒賦值的新節(jié)點 p。

      {

      } strcpy(p->data.num,num);printf(“n”);printf(“請輸入該職工姓名:”);scanf(“%s”,p->data.name);getchar();printf(“n”);printf(“請輸入該職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,p->data.sex);getchar();printf(“n”);printf(“請輸入該職工的年齡:”);scanf(“%d”,&p->data.age);printf(“n”);printf(“請輸入該職工的學(xué)歷:”);scanf(“%s”,p->data.education);getchar();printf(“n”);printf(“請輸入該職工的工資:”);scanf(“%d”,&p->data.salary);printf(“n”);printf(“請輸入該職工的電話號碼:”);scanf(“%s”,p->data.phone);getchar();printf(“n”);printf(“請輸入該職工的住址:”);gets(p->data.address);printf(“n”);p->next=NULL;

      /* 表明這是鏈表的尾部結(jié)點 */ r->next=p;

      /* 將新建的結(jié)點加入鏈表尾部中 */ r=p;saveflag=1;printf(“n”);printf(“系統(tǒng)分配存儲空間失敗!n”);printf(“退出程序!n”);exit(-1);}//while(1)}//void Add函數(shù)結(jié)束。

      void printline()

      //打印橫線。{ }

      void printsubject()

      //打印各分類標(biāo)題。{ }

      void printLinkList(LinkList p)

      //打印p結(jié)點各個數(shù)據(jù)成員的值。{ printf(“ %s

      %s %s

      %d %s %d

      %s

      %sn”,p->data.num,p->data.name,p->data.sex,p->data.age,p->data.education,p->data.salary,p->data.phone,p->data.address);}

      void Allemployeeinfo(LinkList head)//顯示所有職工信息。{

      int count=0;ListNode *p;p=head->next;if(!p){

      } printf(“tttt顯示結(jié)果n”);printline();printsubject();printf(“n”);while(p)printf(“***提示***:目前沒有存儲任何職工記錄!n”);printf(“返回主菜單,請重新選擇功能!n”);return;printf(“ 工 號t 姓 名

      性 別

      年 齡

      學(xué) 歷

      工 資

      電 話tt 住 址n”);printf(“------------------n”);

      } {

      } printline();printf(“n”);printf(“已經(jīng)存儲了%d條職工信息!n”,count);printLinkList(p);p=p->next;count++;void Wrong(){ }

      void menu()

      //主菜單。{

      printf(“n”);printf(“t**********************************************************printf(”t*

      printf(“t*

      printf(”t*

      < 職工信息管理系統(tǒng)_單鏈表實現(xiàn) >

      printf(“t*

      printf(”t*

      [1]

      錄入職工信息

      [2]

      刪除職工信息

      printf(“t*

      [3]

      查詢職工信息

      [4]

      修改職工信息

      printf(”t*

      [5]

      插入職工記錄

      [6]

      統(tǒng)計職工信息

      printf(“t*

      [7]

      排序

      [8]

      保存職工信息

      printf(”t*

      [9]

      顯示所有職工記錄

      [0]

      退出系統(tǒng)

      printf(“n***提示***:輸入錯誤!n”);*********n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);

      printf(“t*

      printf(”t*

      printf(“t*

      版權(quán)所有人:printf(”t*

      電子132班

      printf(“t*

      printf(”t***********************************************************n“);*n”);彭林

      *n“);*n”);1319200063

      *n“);*********n”);} //void menu菜單結(jié)束。

      void Del(LinkList L)//刪除職工信息。{

      int select;

      //刪除方式選擇記錄變量。ListNode *p,*r;char find[20];if(!L->next)

      //當(dāng)list無后繼結(jié)點時,提示和結(jié)束Del()函數(shù)。{

      }

      printf(“n按工號刪除,請按‘1’n按姓名刪除,請按‘2’n”);printf(“n=====>功能選擇:”);scanf(“%d”,&select);if(select==1){

      printf(“請輸入要刪除的職工工號:”);scanf(“%s”,find);getchar();p=Locatenum(L,find);if(p){ r=L;printf(“n***提示***:沒有記錄可以刪除!n”);return;

      } while(r->next!=p)r=r->next;//從第一個結(jié)點找起,直到發(fā)現(xiàn)r->next=p, 是待刪除結(jié)點,跳出循環(huán)。

      r->next=p->next;free(p);printf(“n***提示***:該職工信息已成功刪除!n”);saveflag=1;else Nofind();}//if(select==1).else if(select==2){

      printf(“請輸入要刪除的職工姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);if(p){

      } else Nofind();r=L;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf(“n***提示***:該職工信息已成功刪除!n”);saveflag=1;}//if(select==2).else Wrong();

      //顯示輸入錯誤的話

      }//void Del()刪除函數(shù)結(jié)束。

      void Search(LinkList L)

      //查詢職工信息。{ int select;

      int salary;int sign=0;char find[20];ListNode *p;

      //實現(xiàn)查詢操作的臨時結(jié)構(gòu)體指針變量。if(!L->next){

      } printf(“n按工號查找,請按‘1’n按工資查找,請按‘2’n按姓名查找,printf(”n=====>功能選擇:“);scanf(”%d“,&select);printf(”n“);if(select==1)

      //工號。{

      } else if(select==2)

      //工資。{

      printf(”請輸入要查找的工資:“);scanf(”%d“,&salary);p=Locatesalary(L,salary);printf(”請輸入要查找的工號:“);scanf(”%s“,find);getchar();p=Locatenum(L,find);if(p){

      } else Nofind();printf(”tttt

      查找結(jié)果n“);printline();

      //打印橫線。printsubject();

      //打印各分類標(biāo)題。

      printLinkList(p);

      //打印p結(jié)點各個數(shù)據(jù)成員的值。printline();

      //打印橫線。printf(”n***提示***:沒有職工信息資料可以查詢!n“);printf(”返回主菜單,請重新選擇功能!n“);return;請按‘3’n”);

      } if(p){

      } while(p){

      {

      } } if(sign==0)Nofind();printf(“tttt查找結(jié)果n”);printline();printsubject();printLinkList(p);printline();sign++;p=Locatesalary(p,salary);if(p)printf(“tttt查找結(jié)果n”);printline();printsubject();printLinkList(p);printline();sign++;else if(select==3)

      //姓名。{

      printf(“請輸入要查找的姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);if(p){

      printf(“tttt查找結(jié)果n”);printline();printsubject();printLinkList(p);

      } } printline();else Nofind();else Wrong();}//void Search()查詢函數(shù)結(jié)束。

      void Save(LinkList L)

      //信息保存到文件中。{

      FILE *fp;ListNode *p;int count=0;int flag=1;fp=fopen(“Employeeinfo.txt”,“wb”);if(fp==NULL){

      } p=L->next;while(p){

      if(fwrite(p,sizeof(ListNode),1,fp)==1)

      //將第一個記錄結(jié)點值寫入文

      {

      p=p->next;

      //依次寫入下一個結(jié)點的 count++;

      //文件的記錄數(shù)+1。printf(“n***提示***:打開文件時發(fā)生錯誤!n”);return;件。

      值。

      }

      else

      {

      flag=0;

      printf(“寫入文件過程發(fā)生錯誤!n”);

      break;

      }

      }//while(p).if(count>0){

      } else {

      } fclose(fp);system(“cls”);//清屏。

      printf(“文件保存失敗!‘0’條記錄被保存。n”);printf(“n***提示***:文件保存成功。(有%d條記錄已經(jīng)保存。)n”,count);saveflag=0;

      }//void Save()函數(shù)結(jié)束。

      void Sort(LinkList L)

      //排序功能函數(shù)。{

      ListNode *p,*m,*n;int i,j,count=0;p=L->next;if(!p){

      } system(“cls”);

      //清屏。printf(“按工資從低到高排序:n”);printf(“***以下為排序前的所有職工記錄***n”);Allemployeeinfo(L);while(p){

      } for(i=0;i

      //不包含頭結(jié)點的職工信息結(jié)點的總個數(shù)。p=p->next;system(“cls”);

      //清屏。printf(“無任何職工信息!n”);printf(“返回主菜單!n”);return;

      }

      {

      } printf(“***以下為排序后的所有職工記錄***n”);Allemployeeinfo(L);saveflag=1;printf(“排序成功!n”);n=L;p=L->next;m=p->next;while(m){

      } if(p->data.salary>m->data.salary){

      } else {

      } n=p;p=m;m=m->next;n->next=p->next;p->next=m->next;m->next=p;n=m;m=p->next;void Statistics(LinkList L)//統(tǒng)計職工中的最高工資和最低工資。{

      ListNode *Max,*Min;int i;ListNode *t=L->next;if(!t){ system(“cls”);

      //清屏。printf(“沒有儲存任何職工記錄!n”);

      }

      } printf(“返回主菜單,請先錄入職工信息!n”);return;system(“cls”);Max=Min=t;t=t->next;while(t){

      } printf(“最高工資為:%dn”,Max->data.salary);printf(“最低工資為:%dn”,Min->data.salary);printf(“若要查看最低,最高工資的相關(guān)職工信息,n”);printf(“請按‘1’,然后按照提示進(jìn)行相關(guān)操作,n”);printf(“否則,請按‘1’除外的任何數(shù)字鍵以退出統(tǒng)計功能,返回主菜單。n”);printf(“n=====>功能選擇:”);scanf(“%d”,&i);if(i==1)Search(L);

      //顯示符合要求的職工信息。return;else if(Max->data.salarydata.salary)Max=t;

      //Max指針指向最高工資的職工結(jié)點。Min=t;

      //Min指針指向最低工資的職工結(jié)點。if(Min->data.salary>t->data.salary)t=t->next;void Insert(LinkList L)

      //插入新的職工信息。{

      printf(“本功能可以通過姓名和工號查找到符合要求的n”);//功能介紹。printf(“相關(guān)職工信息,然后將您希望添加進(jìn)去的新的n”);printf(“職工信息插入到該職工信息記錄的后面。n”);ListNode *p,*s;char find[20];

      //存放工號和姓名的變量。int i;printf(“通過姓名查找,請按‘1’。n”);printf(“通過工號查找,請按‘2’。n”);

      printf(“返回主菜單,請按‘3’。n”);printf(“n=====>功能選擇:”);scanf(“%d”,&i);printf(“n”);if(i==3){

      } else if(i==1){

      printf(“請輸入已在存儲記錄中的職工姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);//定位。if(!p){

      } s=(LinkList)malloc(sizeof(ListNode));if(!s){

      } printf(“請輸入新職工工號:”);gets(s->data.num);printf(“n”);printf(“請輸入新職工姓名:”);scanf(“%s”,s->data.name);getchar();printf(“n”);printf(“請輸入新職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,s->data.sex);printf(“系統(tǒng)分配存儲空間失?。”);system(“cls”);return;printf(“您輸入的該職工姓名不在信息記錄中,請重新核審!n”);printf(“返回主菜單。n”);return;system(“cls”);

      //退出插入功能,返回主菜單。return;

      } getchar();printf(“n”);printf(“請輸入新職工的年齡:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“請輸入新職工的學(xué)歷:”);scanf(“%s”,s->data.education);getchar();printf(“n”);printf(“請輸入新職工的工資:”);scanf(“%d”,&s->data.salary);printf(“n”);printf(“請輸入新職工的電話號碼:”);scanf(“%s”,s->data.phone);getchar();printf(“n”);printf(“請輸入新職工的住址:”);scanf(“%s”,s->data.address);getchar();printf(“n”);s->next=p->next;p->next=s;printf(“姓名為:%s的新職工信息已成功插到姓名為:%s的職工信息記saveflag=1;

      //資料已改動的存儲變量。錄后面。n”,s->data.name,p->data.name);else if(i==2){

      printf(“請輸入已在存儲記錄中的職工工號:”);scanf(“%s”,find);getchar();p=Locatenum(L,find);//定位。if(!p){

      printf(“您輸入的該職工工號不在信息記錄中,請重新核審!n”);printf(“返回主菜單。n”);return;

      } s=(LinkList)malloc(sizeof(ListNode));if(!s){

      } printf(“請輸入新職工工號:”);gets(s->data.num);printf(“n”);printf(“請輸入新職工姓名:”);scanf(“%s”,s->data.name);getchar();printf(“n”);printf(“請輸入新職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,s->data.sex);getchar();printf(“n”);printf(“請輸入新職工的年齡:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“請輸入新職工的學(xué)歷:”);scanf(“%s”,s->data.education);getchar();printf(“n”);printf(“請輸入新職工的工資:”);scanf(“%d”,&s->data.salary);printf(“n”);printf(“請輸入新職工的電話號碼:”);scanf(“%s”,s->data.phone);getchar();printf(“n”);printf(“請輸入新職工的住址:”);scanf(“%s”,s->data.address);getchar();printf(“n”);printf(“系統(tǒng)分配存儲空間失?。”);system(“cls”);return;

      }

      } s->next=p->next;p->next=s;printf(“姓名為:%s的新職工信息已成功插到姓名為:%s的職工信息記saveflag=1;錄后面。n”,s->data.name,p->data.name);else {

      } printf(“功能選擇有誤!返回主菜單。n”);return;void main(){

      LinkList L;/*定義鏈表*/ // struct Node *list;

      FILE *fp;/* 文件指針 */

      int choose;/*保存選擇結(jié)果變量*/

      char ch;

      /*保存(y,Y,n,N)*/

      int count=0;/*保存文件中的記錄條數(shù)(或結(jié)點個數(shù))*/

      struct Node *p,*r;

      /*定義記錄指針變量*/

      printf(“tttt職工信息管理系統(tǒng)nttttn”);

      L=(struct Node*)malloc(sizeof(struct Node));

      if(!L)

      {

      printf(“n系統(tǒng)分配存儲空間失??!n”);/*如沒有申請到,打印提示信

      return;

      /*返回菜單*/ 息*/

      }

      L->next=NULL;

      r=L;

      fp=fopen(“Employeeinfo.txt”,“rb”);

      if(fp==NULL)

      {

      printf(“n***提示***:存儲職工信息的文件還不存在,是否創(chuàng)建?

      scanf(”%c“,&ch);(y/n)n”);

      */

      if(ch=='y'||ch=='Y')

      {

      fp=fopen(“Employeeinfo.txt”,“ab+”);

      printf(“文件創(chuàng)建成功!n”);

      }

      else

      {

      printf(“文件沒有創(chuàng)建,無法寫入職工信息!nn”);

      printf(“<-----退 出 職 工 信 息 管 理 系 統(tǒng)----->n”);

      exit(0);

      }

      } // if(fp==NULL)

      printf(“n=====>提示:文件已經(jīng)打開,正在導(dǎo)入記錄......n”);

      while(!feof(fp))//沒有到文件尾時,循環(huán)

      {

      fclose(fp);/* 關(guān)閉文件 */

      printf(“n=====>提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄。n”,count);

      while(1)

      p=(struct Node*)malloc(sizeof(struct Node));

      if(!p)

      {

      if(fread(p,sizeof(struct Node),1,fp))/* 讀文件的已有內(nèi)容放入結(jié)點中

      {

      p->next=NULL;

      r->next=p;

      r=p;/* 將該結(jié)點掛入鏈表中, r指向最后的節(jié)點 */

      count++;

      printf(“ memory malloc failure!n”);

      /*沒有申請成功*/

      exit(0);

      /*退出*/

      }

      }

      } //while(!feof(fp))

      {

      menu();

      printf(“tt====>請選擇:”);

      scanf(“%d”,&choose);

      if(choose==0)

      {

      if(saveflag==1)

      {

      getchar();

      printf(“n=====>提示:資料已經(jīng)改動,是否將改動保存到文件

      scanf(”%c“,&ch);

      if(ch=='y'||ch=='Y')

      Save(L);中(y/n)?n”);

      } //if

      printf(“n***提示***:您已經(jīng)退出系統(tǒng),歡迎再次使用!~n”);

      break;

      }//if switch(choose){ case 1:Add(L);

      break;break;break;break;break;break;Sort(L);break;Save(L);case 2:Del(L);case 3:Search(L);case 4:Modify(L);case 5:Insert(L);case 6:Statistics(L);case 7: case 8:

      break;system(“cls”);Allemployeeinfo(L);break;case 9: default:

      } } } Wrong();break;

      下載C語言鏈表的概念word格式文檔
      下載C語言鏈表的概念.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        學(xué)生管理系統(tǒng)學(xué)生鏈表

        #include #include #include typedef struct student { int num; char name[10]; char passwd[6]; int age; int class; int math; int clan; int chinese; int m......

        黑馬程序員C語言教程:如何實現(xiàn)一個優(yōu)美的鏈表

        如何實現(xiàn)一個優(yōu)美的鏈表 面向?qū)ο蟮恼Z言更接近人的思維方式,而且在很大程度上降低了代碼的復(fù)雜性,同時提高了代碼的可讀性和可維護(hù)性,傳統(tǒng)的 C 代碼同樣可以設(shè)計出比較易讀,易維......

        C語言課程設(shè)計 職工信息管理系統(tǒng) 單鏈表實現(xiàn)程序源代碼

        //C語言課程設(shè)計 職工信息管理系統(tǒng)—單鏈表實現(xiàn) #include "stdio.h" #include "stdlib.h" #include "string.h" int saveflag=0; /*是否需要存盤的標(biāo)志變量*/ struct empl......

        2012《數(shù)據(jù)結(jié)構(gòu)》上機實驗報告 鏈表[★]

        西華大學(xué)數(shù)計學(xué)院學(xué)生上機實踐報告 西華數(shù)學(xué)與計算機學(xué)院上機實踐報告 課程名稱:數(shù)據(jù)結(jié)構(gòu) 指導(dǎo)教師:唐劍梅 上機實踐名稱:上機實踐編號:1 年級: 2011 姓名:蔣俊 學(xué) 號:3120110806......

        雙向循環(huán)鏈表的創(chuàng)建

        #include #include #define OVERFLOW -2 #define ERROR 0 #define OK 1 typedef int status; //雙向循環(huán)鏈表的存儲結(jié)構(gòu) typedef struct DuLNode { int data; int Length; s......

        黑馬程序員c語言教程:Oracle概念

        一、選擇行 1. 簡單的SELECT 語句 SELECT 字段名1 [AS] '字段名1 解釋' FROM table; 2. 處理NULL NVL函數(shù)可把NULL轉(zhuǎn)換成其它類型的符號 編程技巧: NVL函數(shù)在多條件模糊查詢......

        北郵數(shù)據(jù)結(jié)構(gòu)實驗報告 單鏈表

        北京郵電大學(xué) 數(shù)據(jù)結(jié)構(gòu)試驗報告 實驗名稱: 實驗一線性表 學(xué)生姓名:班級:班內(nèi)序號:學(xué)號: 日期: 2014年1月3日 1 實驗?zāi)康?? 熟悉C++語言的基本編程方法,掌握集成編譯環(huán)境的調(diào)試方法......

        二級C語言重要概念總結(jié)byLY大全

        1.線性表是線性結(jié)構(gòu)分析: 邏輯結(jié)構(gòu):線性結(jié)構(gòu) 非線性結(jié)構(gòu) 線性結(jié)構(gòu):線性表 棧 隊列 非線性結(jié)構(gòu):樹 圖 存儲結(jié)構(gòu):順序存儲結(jié)構(gòu) 鏈?zhǔn)酱鎯Y(jié)構(gòu)2.關(guān)于循環(huán)隊列中起始元素為0,還是1的問......