C语言中链表任意位置怎么插入数据?然后写入文件中?
链表插入示意图:(图是个人所画)因为链表指针指来指去,难以理解,所以辅助画图更加方便。
插入某个学号后面图:
定义的结构体:
struct student { ]; //学生学号 ]; //学生姓名 struct student *next; //next 指针 指向 struct student 类型的变量 }stu;
插入到某个学号后面,但不能插入到第一个节点的前面!
/*************** 函数功能: 插入学生 返回:指向链表表头的指针 /***************/ void insert_message(struct student* head) { FILE* fp; //定义文件指针 struct student* pointer,*q,*temp; // p指针指向新节点 q指向插入节点的地方 fp=fopen("student.txt","wb+"); pointer=head->next;//跳过头结点 指向下一个节点 InputBox(stu.ID,,"请输入要插入哪个学号后面"); while(pointer!=NULL) { ) //假设要插入到1后面,输入1 { fwrite(pointer,,fp); //先把1节点写入文件 q = (struct student *)malloc(sizeof(struct student)); //开辟新节点内存 InputBox(stu.ID,,"请输入学生学号"); strcpy(q->ID,stu.ID); InputBox(stu.name,,"请输入学生姓名"); strcpy(q->name,stu.name); temp= pointer->next; //将原来的 1后面的数据 2 赋值给临时temp结构体变量 pointer->next = q; //将q节点 赋值给 原来2的位置 pointer=pointer->next; //将q节点数据(pointer->next 等于q) 赋值给p 好让p节点写入文件 fwrite(pointer,,fp);//写入输入的q节点数据 pointer->next=temp; //将原来2位置的数据赋值到 p的下个节点(由于上个代码p=p->next)p被赋值p->next pointer=pointer->next; //p总是指向新的节点 while(pointer!=NULL) {fwrite(pointer,,fp); //将其他各节点遍历写入文件 pointer=pointer->next; } fclose(fp); outtext("插入学生成功!"); } fwrite(pointer,,fp); //事先开始遍历节点写入文件 pointer=pointer->next; } }
任意位置插入 图:
代码这么一改,任意位置的插入:
/*************** 函数功能: 插入出勤学生 返回:指向链表表头的指针 /***************/ void insert_message(struct student* head) { FILE* fp; //定义文件指针 struct student* pointer,*q,*temp; // p指针指向新节点 q指向插入节点的地方 fp=fopen("student.txt","wb+"); pointer=head->next;//跳过头结点 指向下一个节点 InputBox(stu.ID,,"请输入要插入哪个学号位置?"); while(pointer!=NULL) { ) //输入要插入到哪个位置? { q = (struct student *)malloc(sizeof(struct student)); //开辟新节点内存 InputBox(stu.ID,,"请输入学生学号"); strcpy(q->ID,stu.ID); InputBox(stu.name,,"请输入学生姓名"); strcpy(q->name,stu.name); temp=pointer; //将原来的 数据 赋值给临时temp结构体变量 pointer = q;//将q节点 赋值给 原来2的位置 fwrite(pointer,,fp);//写入输入的q节点数据 pointer->next=temp; //将原来2位置的数据赋值到 p的下个节点 pointer=pointer->next; //p总是指向新的节点 while(pointer!=NULL) {fwrite(pointer,,fp); //将其他各节点遍历写入文件 pointer=pointer->next; } fclose(fp); outtext("插入学生成功!"); } fwrite(pointer,,fp); //事先开始遍历节点写入文件 pointer=pointer->next; } }
C语言中链表任意位置怎么插入数据?然后写入文件中?的更多相关文章
- 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...
- 《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的
0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描 ...
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述 ...
- C# 将List中的数据导入csv文件中
//http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中 将数 ...
- extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”
extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”
- 在C的头文件中定义的结构体,如何在cpp文件中引用
解决方案1:在cpp文件中放置.c,且在该文件中引用变量 解决方案2:在一个cpp文件中包含.c,但在另一个cpp文件中使用结构体变量 cpp文件1 cpp文件2 #include "dia ...
- MATLAB实例:新建文件夹,保存.mat文件并保存数据到.txt文件中
MATLAB实例:新建文件夹,保存.mat文件并保存数据到.txt文件中 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB实现:指定路径下 ...
- python将一个字符串写入文件中的编码问题
python2将一个字符串写入文件中: 1.如果字符串是str类型 # -*- coding:utf-8 -*- txtFile="今天天气不错" name = "1.t ...
- python编码的原理以及写入文件中乱码的原因
1.unicode可以理解为世界上所有字符的集合,它不对应二进制编码 2.详见: https://blog.csdn.net/qq_33692803/article/details/81321340 ...
随机推荐
- Java Selenium封装--RemoteWebElement
package com.liuke.selenium.driver; import java.sql.SQLException; import java.util.List; import org.j ...
- JAVA多线程之间共享数据BlockingQueue介绍
在JAVA的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利. ...
- 基于软件开源实践(FLOSS)论共产主义的可实现性
好久没发博客,来个狠的,我不信挨踢界有人比我更蛋疼来研究这个. 在马克思提出共产主义100多百年后,软件开发领域中出现了一种特别的生产方式:开源(FLOSS:Free/Libre and Open S ...
- CutJS – 用于 HTML5 游戏开发的 2D 渲染引擎
CutJS 是轻量级的,快速的,基于 Canvas 开发的 HTML5 2D 渲染引擎,可以用于游戏开发.它是开源的,跨平台的,与现代的浏览器和移动设备兼容.CutJS 提供了一个类似 DOM 树的 ...
- CSS3颜色特征温故
网页是色彩的表现原理:显示器是由一个个像素构成,利用电子束来表现色彩.像素把光的三原色:红色(R).绿色(G).蓝色(B)组合成的色彩按照科学原理表现出来.一个像素包含8位元色彩的信息量,又从0 ~ ...
- jQuery的eq方法
定义和用法eq() 方法将匹配元素集缩减值指定 index 上的一个. 语法.eq(index) 其中的index :整数,指示元素的位置(最小为 0).如果是负数,则从集合中的最后一个元素往回计数. ...
- SharePoint 2013必备组件离线包安装:AppFabric无法安装问题解决
由于没有网络,无法使用sharepoint2013的安装必备软件的在线下载向导安装,当要安装 SharePoint 2013 的服务器与 Internet 隔离时,通常需要从脱机位置安装必备组件.即使 ...
- SharePoint 2013 开发文档管理字段小记
前言 最近有这样一个需求,就是要求在列表库里管理文档,需要多文档管理.带版本控制.可以单独授权等基本操作.于是乎,就开发了一个自定义段,这里介绍一下字段的思路,里面有一些遇到的问题,在群友的帮助下已解 ...
- [GitHub] GitHub使用教程for Eclipse
1.下载egit插件 打开Eclipse,git需要eclipse授权,通过网页是无法下载egit的安装包的.在菜单栏依次打开eclipse→help→install new software→add ...
- DevExpress 2015.2发布 看看有哪些更新
下面是besy翻译的部分重要更新,要查看全部更新细节请访问英文官网. | 下载DevExpress 2015.2 Diagram Control 新的DevExpress Diagram Contro ...