日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C链表的简单案例

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

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

鏈表的特點:

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

  2.最后結點為NULL

  3.頭結點指向下一個結點的結構體指針

#include <stdio.h> #include <process.h>struct Student{char cName[20]; //姓名 int iNumber; //學號 struct Student *pNext; //指向下一個結點的地址 }; int iCount; //全局變量,用來表示鏈表長度 //創(chuàng)建鏈表返回鏈表的頭指針 struct Student *Create(){struct Student *pHead = NULL; //定義頭指針struct Student *pEnd, *pNew; //最后一個結點和新的結點 iCount = 0; //初始化鏈表長度//給最后 一個結點和新結點分配內存空間 pEnd = pNew = (struct Student *)malloc(sizeof(struct Student)); //提示讓其輸入姓名和 學號 printf("please enter the name,then the number\n");scanf("%s", &pNew->cName);scanf("%d", &pNew->iNumber);//判斷輸入的學號是否為0,不為0就進行處理 while(pNew->iNumber !=0){iCount++; //結點加1if(iCount == 1){pHead = pNew; //頭指針指向下個結點的地址 pNew->pNext = pHead;pEnd = pNew; //pEnd這是跟蹤的指針結點 }else{pEnd->pNext = pNew; //讓之前的元素的指針指向下一個結點的地址 pNew->pNext = NULL; //讓當前的元素的指針域指向NULL pEnd = pNew;}//再給pNew分配內存空間 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)); //分配內存空間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; //定義前一個結構體指針變量 struct Student *pTemp; //定義要刪除的結構體指針變量 pPre = pTemp = pHead; //都指向pHead //循環(huán)的目的是讓pTemp為要刪除的結點,pPre為其前面一個結點 for(i=1; i<iIndex; i++){pPre = pTemp;pTemp = pTemp->pNext; }pPre->pNext = pTemp->pNext; //刪除pTemp結點free(pTemp);iCount--; }//寫入文件 void Save(struct Student *pHead){FILE *p; //定義一個文件指針 struct Student *pTemp; //定義一個結構體指針變量 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); //關閉指針 } int main(){struct Student *pHead;pHead = Create();pHead = Insert(pHead);Delete(pHead, 2);Save(pHead);Print(pHead);return 0; }


效果:

?

總結

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

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