日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C链表的简单案例

發(fā)布時間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C链表的简单案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

此案例只是簡單的使用鏈表

鏈表的特點:

  1.不需要提前知道要存入數(shù)據(jù)的長度

  2.最后結(jié)點為NULL

  3.頭結(jié)點指向下一個結(jié)點的結(jié)構(gòu)體指針

#include <stdio.h> #include <process.h>struct Student{char cName[20]; //姓名 int iNumber; //學(xué)號 struct Student *pNext; //指向下一個結(jié)點的地址 }; int iCount; //全局變量,用來表示鏈表長度 //創(chuàng)建鏈表返回鏈表的頭指針 struct Student *Create(){struct Student *pHead = NULL; //定義頭指針struct Student *pEnd, *pNew; //最后一個結(jié)點和新的結(jié)點 iCount = 0; //初始化鏈表長度//給最后 一個結(jié)點和新結(jié)點分配內(nèi)存空間 pEnd = pNew = (struct Student *)malloc(sizeof(struct Student)); //提示讓其輸入姓名和 學(xué)號 printf("please enter the name,then the number\n");scanf("%s", &pNew->cName);scanf("%d", &pNew->iNumber);//判斷輸入的學(xué)號是否為0,不為0就進(jìn)行處理 while(pNew->iNumber !=0){iCount++; //結(jié)點加1if(iCount == 1){pHead = pNew; //頭指針指向下個結(jié)點的地址 pNew->pNext = pHead;pEnd = pNew; //pEnd這是跟蹤的指針結(jié)點 }else{pEnd->pNext = pNew; //讓之前的元素的指針指向下一個結(jié)點的地址 pNew->pNext = NULL; //讓當(dāng)前的元素的指針域指向NULL pEnd = pNew;}//再給pNew分配內(nèi)存空間 pNew = (struct Student *)malloc(sizeof(struct Student)); printf("please enter the name,then the number\n");scanf("%s", &pNew->cName);scanf("%d", &pNew->iNumber);}free(pNew);return pHead; }//輸出鏈表 void Print(struct Student *pHead){struct Student *pTemp; //定義一個臨時指針int iIndex = 0; //用來計算有多少個指針輸出 printf("=====the links has %d element======\n", iCount);printf("|iIndex| name |iNumber|\n");pTemp = pHead;while(pTemp != NULL){iIndex++;printf("%6d", iIndex);printf("%10s", pTemp->cName);printf("%7d\n", pTemp->iNumber);pTemp = pTemp->pNext; }printf("===================================\n"); } //插入元素,只需要頭指針就行,并返回頭指針 struct Student *Insert(struct Student *pHead){struct Student *pNew;pNew = (struct Student *)malloc(sizeof(struct Student)); //分配內(nèi)存空間printf("請輸入name和number :\n");scanf("%s", &pNew->cName);scanf("%d", &pNew->iNumber);pNew->pNext = pHead;pHead = pNew; iCount++; return pHead; } //刪除元素, 傳一個頭指針,以及第幾個元素,無返回值 void Delete(struct Student *pHead, int iIndex){int i; //用于循環(huán)struct Student *pPre; //定義前一個結(jié)構(gòu)體指針變量 struct Student *pTemp; //定義要刪除的結(jié)構(gòu)體指針變量 pPre = pTemp = pHead; //都指向pHead //循環(huán)的目的是讓pTemp為要刪除的結(jié)點,pPre為其前面一個結(jié)點 for(i=1; i<iIndex; i++){pPre = pTemp;pTemp = pTemp->pNext; }pPre->pNext = pTemp->pNext; //刪除pTemp結(jié)點free(pTemp);iCount--; }//寫入文件 void Save(struct Student *pHead){FILE *p; //定義一個文件指針 struct Student *pTemp; //定義一個結(jié)構(gòu)體指針變量 p = fopen("data.txt", "a+");if(p == NULL){printf("打開文件失敗!\n");}pTemp = pHead;while(pTemp!=NULL){//fputs(pTemp->cName, p);fprintf(p, "%15s", pTemp->cName);fprintf(p, "%10d", pTemp->iNumber);fputs("\n", p);pTemp = pTemp->pNext;}fclose(p); //關(guān)閉指針 } int main(){struct Student *pHead;pHead = Create();pHead = Insert(pHead);Delete(pHead, 2);Save(pHead);Print(pHead);return 0; }


效果:

?

總結(jié)

以上是生活随笔為你收集整理的C链表的简单案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。