news 2026/9/2 20:56:39

删除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/8/28 9:30:53

域渗透靶场从零基础入门到精通,收藏这一篇就够了!

【实战收藏】二层内网域渗透靶场复现&#xff1a;从fscan到minikatz的渗透全流程 本文记录了一个二层内网域渗透靶场实战过程&#xff1a;首先通过fscan扫描发现phpStudy并利用弱口令进入phpMyAdmin&#xff1b;然后利用MySQL的general_log功能写入PHP木马&#xff1b;接着进行…

作者头像 李华
网站建设 2026/8/31 6:12:23

使用TensorFlow进行聚类分析:K-Means实现

使用TensorFlow进行聚类分析&#xff1a;K-Means实现 在当今数据驱动的商业环境中&#xff0c;企业每天都在生成海量的行为日志、交易记录和用户交互数据。如何从这些未经标注的数据中自动发现结构与模式&#xff1f;这正是无监督学习大显身手的舞台。而其中&#xff0c;K-Mea…

作者头像 李华
网站建设 2026/9/1 7:07:33

旋翼无人机检测数据集VOC+YOLO格式9132张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;9132标注数量(xml文件个数)&#xff1a;9132标注数量(txt文件个数)&#xff1a;9132标注类别…

作者头像 李华
网站建设 2026/8/30 15:36:51

【大模型部署新标杆】:Open-AutoGLM生产环境落地全攻略

第一章&#xff1a;Open-AutoGLM部署概述Open-AutoGLM 是一个基于开源大语言模型的自动化代码生成与推理引擎&#xff0c;专为开发者和企业级应用提供高效的本地化部署方案。其核心优势在于支持多后端模型接入、灵活的任务调度机制以及可扩展的插件体系&#xff0c;适用于代码补…

作者头像 李华
网站建设 2026/8/27 17:05:59

TensorFlow在体育动作分析中的创新应用

TensorFlow在体育动作分析中的创新应用 在职业篮球训练场上&#xff0c;一名年轻球员反复练习跳投&#xff0c;教练站在场边紧盯着他的每一个细节&#xff1a;起跳时机、出手角度、肘部位置……然而&#xff0c;人的肉眼总有局限。即使是最有经验的教练&#xff0c;也难以在高速…

作者头像 李华
网站建设 2026/8/28 4:22:37

好写作AI:社科论文论证强化——如何智能辅助观点深化?

当你的社科论文初稿得到了“观点有待深化”、“论证链条单薄”或“缺乏理论对话”的审稿意见&#xff0c;你是否感到茫然&#xff1f;如何让基于现象的分析&#xff0c;升华为具有理论贡献与思想力量的学术论述&#xff1f;社科研究与自然科学的关键区别&#xff0c;在于其核心…

作者头像 李华