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 ...
随机推荐
- Android 手机卫士2--home页面
1,自定义获取焦点的TextView FocusTextView.java package com.itheima.mobilesafe74.view; import android.content. ...
- 使用Sublime Text作为Markdown编辑器
Sublime Text 3作为一个优秀的文本编辑器,拥有很多的扩展插件.我们可以利用这些插件为Sublime Text 增加扩展的功能,在这里我们借助两个插件来将Sublime Text 3变成一个 ...
- Ampersand.js - 模块化的 JS 应用程序开发框架
Ampersand.js 是一个高度模块化,松耦合,用于构建先进的 JavaScript 应用程序的框架.通过良好定义的方法,结合了一系列微小的 CommonJS 模块.条理清晰,没有多余的冗余代码. ...
- Quill – 可以灵活自定义的开源的富文本编辑器
Quill 的建立是为了解决现有的所见即所得(WYSIWYG)的编辑器本身就是所见即所得(指不能再扩张)的问题.如果编辑器不正是你想要的方式,这是很难或不可能对其进行自定义以满足您的需求. Quill ...
- CSS尺寸单位 % px em rem 详解
在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位.相对长度单位按照不同的参考元素,又可以分为字体相对单位和视窗相对单位.字体相对单位有:em.ex.ch.rem:视窗相对单位有:vw.vh.v ...
- 仿iphone日历插件(beta)
前言 小伙伴们好,很久不见了.最近工作进入正常期了,所以慢慢的悠闲的时间久没有了,所以不能每天水一篇了. 最近也在听师傅(http://home.cnblogs.com/u/aaronjs/)的教导开 ...
- Struts2详细教程
Struts2详细教程:http://www.yiibai.com/struts_2/
- 从零开始,做一个NodeJS博客(二):实现首页-加载文章列表和详情
标签: NodeJS 0 这个伪系列的第二篇,不过和之前的几篇是同一天写的.三分钟热度貌似还没过. 1 静态资源代理 上一篇,我们是通过判断请求的路径来直接返回结果的.简单粗暴,缺点明显:如果url后 ...
- Java Android HTTP实现总结
Java Android HTTP实现总结 Http(Hypertext Transfer Protocol)超文本传输协议,是一个基于请求/响应模式的无状态的协议,Http1.1版给出了持续连接的机 ...
- Android 沉浸式状态栏 实现方式二 ( 更简单 )
以前写过一个沉浸式状态栏 的实现方式 Android 沉浸式状态栏 实现方式一 现在有个更为简单的实现方式 . 相关链接 http://www.apkbus.com/forum.php?mod=vie ...