news 2026/8/1 18:54:20

删除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/7/30 12:55:03

基于TensorFlow的空气质量预测系统开发

基于TensorFlow的空气质量预测系统开发 在城市上空灰蒙蒙的雾霾背后&#xff0c;隐藏着一个日益紧迫的挑战&#xff1a;我们能否提前知道明天的空气是否适合呼吸&#xff1f;随着极端天气频发和工业排放持续增加&#xff0c;公众对空气质量的关注已从“新闻话题”演变为“生活刚…

作者头像 李华
网站建设 2026/7/30 12:58:36

基于TensorFlow的OCR系统开发实战

基于TensorFlow的OCR系统开发实战 在银行票据自动录入、物流单据扫描处理、医疗病历数字化等实际场景中&#xff0c;每天都有海量的纸质文档等待转换为结构化数据。传统人工录入不仅效率低下&#xff0c;还容易出错&#xff1b;而早期基于图像处理和规则匹配的OCR工具&#xf…

作者头像 李华
网站建设 2026/7/28 23:30:21

收藏!李彦宏预言下的2025职场:程序员不会消失,但必须拥抱大模型

“以后大概率不会再有‘程序员’这种专属职业了——只要会说话&#xff0c;人人都能具备程序员的核心能力。”百度创始人、董事长兼CEO李彦宏在央视采访中的这番言论&#xff0c;近期在科技圈和职场圈引发了广泛讨论。近两年来&#xff0c;AI技术的爆发式发展尤其是大模型的普及…

作者头像 李华
网站建设 2026/8/1 10:00:34

地震波形识别:TensorFlow地质信号处理

地震波形识别&#xff1a;TensorFlow地质信号处理 在现代地震监测系统中&#xff0c;每秒都有成千上万条波形数据从遍布全球的传感器涌入数据中心。这些看似杂乱无章的震动曲线&#xff0c;实则记录着地球内部活动的“心跳”——可能是远处一次微小的断层滑动&#xff0c;也可能…

作者头像 李华