C链表的简单案例

小编 2026-06-21 阅读:882 评论:0
此案例只是简单的使用链表链表的特点:  1.不需要提前知道要存入数据的长度  2.最后结点为NU...

此案例只是简单的使用链表

链表的特点:

  1.不需要提前知道要存入数据的长度

  2.最后结点为NULL

  3.头结点指向下一个结点的结构体指针

#include <stdio.h>#include <process.h>struct Student{    char cName[20];    //姓名     int iNumber;    //学号     struct Student *pNext;    //指向下一个结点的地址 }; int iCount;    //全局变量,用来表示链表长度 //创建链表返回链表的头指针 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
");     scanf("%s", &pNew->cName);     scanf("%d", &pNew->iNumber);          //判断输入的学号是否为0,不为0就进行处理      while(pNew->iNumber    !=0){         iCount++;    //结点加1        if(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
");         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======
", iCount);    printf("|iIndex|   name   |iNumber|
");    pTemp = pHead;    while(pTemp != NULL){        iIndex++;        printf("%6d", iIndex);        printf("%10s", pTemp->cName);        printf("%7d
", pTemp->iNumber);        pTemp = pTemp->pNext;     }    printf("===================================
");} //插入元素,只需要头指针就行,并返回头指针 struct Student *Insert(struct Student *pHead){    struct Student *pNew;    pNew = (struct Student *)malloc(sizeof(struct Student));    //分配内存空间    printf("请输入name和number :
");    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;    //用于循环    struct Student *pPre;    //定义前一个结构体指针变量     struct Student *pTemp;    //定义要删除的结构体指针变量     pPre = pTemp = pHead;    //都指向pHead         //循环的目的是让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("打开文件失败!
");    }    pTemp = pHead;    while(pTemp!=NULL){        //fputs(pTemp->cName, p);        fprintf(p, "%15s", pTemp->cName);        fprintf(p, "%10d", pTemp->iNumber);        fputs("
", 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;}


效果:

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表