news 2026/3/1 12:04:30

删除m节点和n节点之间的节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
删除m节点和n节点之间的节点
​ #include <stdio.h> #include <stdlib.h> #define N 8 struct student { int num; /* 学号 */ float score; /* 成绩 */ struct student *link; /*指向下一个节点的指针*/ }; struct student *creat( ) { struct student *head,*p[N],*q; int n[N]={0,1,2,3,4,5,6,7}; float f[N]={ 478.3, 482.5, 487.1, 489.2, 472.8, 500, 502.5, 510.9 }; int i; head=NULL; for(i=0;i<8;i++) { /* 申请新的节点 */ p[i]=(struct student *)malloc(sizeof(struct student)); p[i]->num=n[i]; p[i]->score=f[i]; if (head==NULL) /*刚才新建的是不是第一个节点*/ head=p[i]; /*是,则令该节点为头结点,head为头指针*/ else q->link=p[i]; /*否,则将该节点挂到链表尾部*/ q=p[i]; /* q总是指向已建链表的最后一个结点*/ } if (head!=NULL) q->link=NULL; /*如果链表不为空,则设立尾结点标志*/ return(head); } void print(struct student *phead) { struct student *p; p=phead; while (p!=NULL) { printf("%d,%5.1f\n",p->num ,p->score ); p=p->link ; /*指向下一个节点*/ } } struct student *del(struct student *phead,int n,int m) { struct student *p, *q, *r; p=phead; if (phead==NULL) /* 是不是一个空链表? */ return (phead); if(p->num == m) /*要删除的是头节点*/ { q=p; /* q指向当前节点,p指向下一个节点 */ p=p->link; free(q); /* 释放q节点空间 */ if(p==NULL) return NULL; /* 链表只有一个节点 */ while(p->num <= n) /* 由n确定待删除节点 */ { q=p; /* q指向当前节点,p指向下一个节点 */ p=p->link; free(q); /* 释放q节点空间 */ if(p==NULL) return NULL; /* 删除掉的是尾节点 */ } phead=p; /* p是头节点 */ } else { while(p->num != m) { q=p; // q指向当前节点 p=p->link; // p指向下一个节点 if(p==NULL) return phead; /* 没有要删除的节点 */ } r=q; /* r指向m节点之前的最后一个节点 */ q=p; /* q指向m节点 */ while(p->num <= n) /* 由n确定待删除节点 */ { p=p->link; /* p指向下一个节点 */ free(q); /* 释放q节点空间 */ q=p; /* q指向p节点 */ if(p==NULL) /* 是空节点 */ { r->link=p;return phead;} /* r节点是最后一个节点 */ } r->link = p; /* 把p节点插入链表 */ } return(phead); /* 返回头结点 */ } int main() { int m,n; struct student *head; m=6;n=7; head=creat( ); /* 生成链表 */ printf("before delete:\n"); print(head); /* 输出链表 */ head=del(head,n,m); /* 删除m和n之间节点 */ printf("after delete:\n"); print(head); /* 输出链表 */ return 0; } ​

运行结果:

before delete:

0, 478.3

1, 482.5

2, 487.1

3, 489.2

4, 472.8

5, 500.0

6, 502.5

7, 510.9

after delete:

0, 478.3

1, 482.5

2, 487.1

3, 489.2

4, 472.8

5, 500.0

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 1:39:55

java计算机毕业设计校园活动管理系统 高校校园文化活动发布与报名平台 基于SpringBoot的学生活动全流程管理系统

计算机毕业设计校园活动管理系统2q8h99&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。海报栏被贴得层层叠叠&#xff0c;报名名单在纸上改得面目全非&#xff0c;活动现场还拿着…

作者头像 李华
网站建设 2026/2/27 8:20:23

基于TensorFlow的对话系统生成模型训练

基于TensorFlow的对话系统生成模型训练 在智能客服、虚拟助手和自动化应答日益普及的今天&#xff0c;用户对“机器是否真的能听懂人话”提出了越来越高的要求。一个真正流畅的对话系统&#xff0c;不能只是从固定话术库里挑句子&#xff0c;而要能像人一样理解上下文、组织语言…

作者头像 李华
网站建设 2026/2/28 9:47:07

城市仿真软件:MATSim_(11).城市规划与交通规划集成

城市规划与交通规划集成 在城市仿真软件中&#xff0c;城市规划与交通规划的集成是一个重要的领域&#xff0c;它涉及到如何将城市的空间布局、土地使用、人口分布等城市规划要素与交通需求、交通网络、交通流量等交通规划要素结合起来&#xff0c;以实现更精细、更准确的城市交…

作者头像 李华
网站建设 2026/2/26 23:04:56

TensorFlow在智能家居控制中的应用场景

TensorFlow在智能家居控制中的应用场景 在现代家庭中&#xff0c;智能设备早已不再只是简单的远程开关。从能识别人脸的门铃&#xff0c;到会“听懂”指令的音箱&#xff1b;从自动调节温度的空调&#xff0c;到夜间监测老人活动的安全系统——这些背后都离不开一个核心能力&am…

作者头像 李华
网站建设 2026/2/24 0:46:35

好写作AI:英文学术写作——如何助力非母语研究者跨越表达鸿沟?

你是否曾花费数小时反复斟酌一个英文句子&#xff0c;却仍不确定它听起来是否“地道”&#xff1f;或在收到审稿意见“语言需要大幅修改”时&#xff0c;感到才华被语言藩篱所困&#xff1f;对于非英语母语的研究者而言&#xff0c;用英文清晰、准确、规范地表达复杂的学术思想…

作者头像 李华