怎么用文件储存链表并能够随时打开对其进行操作

我想用文件来储存链表信息并且能够随时打开再读入链表并对其进行操作,最好能有程序代码……表示看代码看得懂……我不会太多c++操作,大二计算机系……

3个回答

链表就有节点,代码中节点定义都有前后节点的指针,那么你写文件中,也需要有个字段用来指示前后节点的位置,最简单的比如
///---a.ini
[Head]
Value=head
PreNode=nil
NextNode=Node_1
[Node_1]
Value=1
PreNode=Head
NetNode=Node_2

像上面的写法,你遍历起来,稍微麻烦点,不过也不是不行。
对于增删,无非就改变下前后节点的指向,就行了
整体实现起来不难,关键在于效率!!!!

FakeFantasy
FakeFantasy 这个可以在C++里用咩?
一年多之前 回复

首先要给出你的数据结构,说白了,你这个相当于是简单的文件数据库

FakeFantasy
FakeFantasy 我是想把一个多叉树存在一个链表里……然后现在就是要把这个链表存在文件里以便能永久保存
一年多之前 回复

说一点简单的思路,就是你定义一个数据结构,一个文件每一行就储存一个数据,楼上说的对,就像一个简单的文件数据库

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用链表对集合进行操作
用链表对集合进行操作,包括求两的集合的交、差、并,以及求集合的补,判断某个元素是否在集合中等
对文件进行操作
File source = new File(“D:/temp1.txt”); File distination = new File(“D:/temp2.txt”); try { FileInputStream fis = new FileInputStream(source); BufferedReader
如何打开一幅位图文件并对其进行其他操作.
请问如何打开位图文件,然后保存其信息.rn然后想对其进行灰度化处理,并将处理后的图像显示到先前图像的地方.rnrnrn想知道是不是需要保存每一个像素点的色彩信息,然后对其进行灰度处理所相应的计算.然后将计算后得到的每个像素的信息覆盖到原来的像素上?rnrn希望各位不吝赐教.没接触过图像处理,但毕设用到了.
用perl对文件进行操作?
我得文件内容如下:rnrnwwllrnrnname vid flag Port rnrnwll24 1 DYNAMIC 24 rnrny345d 1 DYNAMIC 10 rnrnllp45 1 DYNAMIC 24 rnrn24xin 1 DYNAMIC 15rnrnrn我想把前两行删除,即wwllrn和name vid flag Port 还有每行数字为24的删除,即通过perl对文件的操作rn我得文件内容变为rny345d 1 DYNAMIC 10rn24xin 1 DYNAMIC 15rn如何实现,小弟在线等
用VC对word文件进行操作
想用VC对word文件进行操作,能不能讲一下大体过程,再提供一下例程链接,用于学习!谢谢
用FSO对文件进行操作的问题!!!!
用FSO对文件进行复制,移动,删除等出现的错误:rn没有权限rnrn我的C盘格式是NTFS,但权限我已经改为完全控制了rn还是不行rn要怎么做呢?
用java对文件进行操作
.java文件,main中有测试用的代码,粘到src下可直接运行使用。 这个版本中目前有的方法为: 1.创建txt文件的方法。 2.过滤文件的方法。 3.修改文件名的方法。 4.获取文件大小,如果是文件夹则统计有多少个文件的方法。 5.复制单个txt文件的方法。 6.为txt文件记录内容的方法。 7.读取txt文件内容的方法。
用IO流对文件进行操作
一、对文件进行读写操作1.使用FileInputStream读取数据 //从文件中读取数据 public static void FileInputStream() throws IOException{ FileInputStream in=new FileInputStream("E:\\test.txt"); int tmp; String result=""; whi...
怎么对另一个文件的对象进行操作。
在A.java文件里有一个JButton的对象b1,然后启动一个线程,线程的类定义写在另一个文件B.java里。我要在线程的run()里面让b1变灰,就是setEnabled(false)。请问该怎么做
C++怎么对文件进行操作?
C++怎么对文件进行操作?(添加一行,删除一行,插入一行,读第几行内容.......)
用ASP打开EXCEL文件,能在IE中对其进行编辑,保存,修改,之类的操作
rn如题:我的主要目的就是将excel在网页中打开..能对进行其操作.rnrn请大家帮帮忙,rnrn最好是给出一个能够运行的例子.rnrn谢谢大家了!
如何获取notes的附件,并能够对附件进行操作
我想对notes中的一些附件进行操作,rn我用tmpFile=doc.GetItemValue( "$File" ),可以获取附件的名称rnrn但如何对附件进行操作,比如附件是个excel文件 rn
怎么用VB对MDB文件进行查找操作?
我想通过用户输入的字符串来查找库中有没有包含这个字符串的记录,凡是有的都列出来,而且希望能查找含有两个不同的字符串的记录,我查过以前的贴子,都不行,出错,请高手给代码
急!请问怎么用VBA对文件和目录进行操作?
急!请问怎么用VBA对文件和目录进行操作?rnrn具体需要的功能有:rn检索特定条件的文件rn取得文件的日期,大小等信息rn复制或者删除文件rn取得文件家内文件列表rn复制或者删除文件夹rnrn
调用ACAD程序,对其进行操作?
我想从C++程序中调用ACAD,对其进行操作,比如画一条线。rnrn更一般的说法,就是要启动一个可执行程序,然后通过C++程序来执行该程的某个命令(不是手动操作)。rn给个说明问题的小程序。rn
C++用链表储存多项式
C++用链表结构储存多项式的小程序,注释清晰,包看明白~
请问怎样动态添加控件,并能够对其进行拖放操作改变位置
如题,就像vb中生成控件,能够动态生成、拖放和在相应事件里执行代码
C对文件进行操作
重定向版: #define LOCAL #include #define INF 1000000000 int main() { #ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout); #endif int x,n=0,min=INF,max=-INF,s=0; while(scanf("%d
对文件进行操作的问题
在php页面有一段用javascript 写的一个读取文件的代码,但在运行时,发现rnrnfso = new ActiveXObject("Scripting.FileSystemObject");rnrn不能远行,提示“automation服务器不能创建对象”rn有什么地方没设置好??
MFC对文件进行操作
很全面,MFC对文件进行操作MFC对文件进行操作MFC对文件进行操作
对注册表文件进行操作
一、向注册表文件中写信息:拷一个字符串到Win.ini文件当中,它仅用于16位操作系统当中. 平台SDK中的函数: WriteProfileString(  LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString ); 它需要在CFileApp中的Initstance()函数中完成,这个函数是应用程序初始化时需要调用的一个虚函数,
对链表进行操作(实现人机交互)
初学数据库的可以借鉴一下噢,可实现对链表的各种基本操作
怎么实现浏览系统的服务并对其进行操作??
我想做一个单独的有界面的程序,实现对系统服务的一些操作,如浏览、关闭\开启一个服务,或是删除一个服务。各位大侠,请问怎么实现啊????
谁有对文件进行链表存储插入等操作的源代码?
谁有对文件进行链表存储插入等操作的源代码?发到我的电子邮箱:cxsea2005@126.com,十分感谢。
怎么对dialog进行操作??
我 show 了一个 MessageBox,里面有 ok 和 cancel 的按钮,rn怎样对这个对话框的两个按钮进行操作编程呢??
怎么对access数据库进行操作
小弟初学c#现在想写一个简单的用户名密码验证的网页,想知道,怎么对数据库操作呀,rn哪位贴个代码好吗,谢谢rnrn就是select已经写完,怎么查询,查询之后怎么判断查出来的密码和用户输入的密码是否一致呀rnrn谢谢,在线等
怎么对文本框进行操作
就像rnforeach(DataGridItem item in DataGrid2.Items)rn rn对DataGrid中的项操作一样,怎么对页面上的所有文本框进行操作.
怎么对注册表进行操作?
谢谢!
用链表对类对象进行操作并读写文件
链表对类对象进行操作并读写文件
java对用io对文件进行操作的时候,/和\的注意事项
在java中经常需要对文件进行操作,其中也会有路径之类的东西,如果是url那么在字符串中出现/和\混用的是没有问题的,但是如果在linux下面就会识别不出来,建议使用java io 中的file的separator类作为分隔符,这样会根据操作系统,来自动识别应该用哪种,就不会出错...
怎么在view中动态生成Button,并能够进行单击操作?
我是在单文档项目中,在view中动态生成Button。语句如下,在CMainFrame::OnCreate中加入以下语句:rnm_pButton =new CButton;rn资源里加一字符串资源IDC_MYBUTTONrnm_pButton->Create(_T ("TITLE "), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(400,400,500,424),this,IDC_MYBUTTON);rnrnrn但是可以显示不能点击啊。谁能帮我解决这个问题。最好不要凭空想象!rnrn急,谢谢各位大侠!!!!rn
对链表进行排序
对链表进行排序: 参考的思路是来自于这位“哥们 ”https://leetcode.com/discuss/92326/share-my-c-concise-solutions-easy-to-understand /** * Definition for singly-linked list. * struct ListNode { * int val; *
对链表进行插入排序
#includern#includern//#define NULL 0 rnusing namespace std;rntypedef struct List //定义一个结构体,后面那个L我不知道怎么解释;rn int date;rn struct List *next;rnL;rnvoid CreatList(L*& head) //建表函数,形参是一个List指针的引用,输入0表示结束;rnrn int num;rn L *p1,*p2;rn p2=NULL;rn printf("the first date\n");rn scanf("%d",&num); //输入第一个数据;rn if(num==0) head=NULL; //第一个数据为0证明链表为空;rn elsern while(num!=0) //将数据存入链表中,直到输入0为止;rn if((p1=(L*)malloc(sizeof(L)))==NULL) //分配内存失败直接返回并报错;rn printf("error:Have not space\n");rn head=NULL;rn rn p1->date=num;rn if(p2!=NULL) p2->next=p1;p2=p1;rn else head=p2=p1;rn scanf("%d",&num);rn rn p1->next=NULL; //将最后一个的指针指向空;rn rn printf("The end\n");rn return;rnrnvoid ShowList(L *head) //输出链表数据;rnrn L *p;rn if(head==NULL)printf("error:This List is empty.\n"); //如链表为空直接返回;rn else rn int i=1;rn p=head;rn do //从第一个结点开始输出所有数据;rn cout.width(10);rn cout<date;rn if(++i==5)cout<next;rn while(p!=NULL);rn printf("\nOK\n");rn rnrnvoid DAList(L*& head) //删除链表中数据与num相同的结点;rnrn int num;rn cin>>num;rn if(head==NULL)rn printf("this list is empty.\n");rn return;rn rn elsern L *p1,*p2;rn p1=head;rnrn while(p1!=NULL&&p1->date!=num)rn p2=p1;rn p1=p1->next;rn rn if(p1==NULL) printf("Can't find it.\n");rn elsern if(head->date==num)head=p1->next;rn else p2->next=p1->next;rn free(p1);rn rn rnrnrnvoid SortList(L*& head) //对链表排序,用排入法;rnrn L *p1,*p2,*p3;rn p1=head->next;rn p1=p1->next;rn p2=head->next;rn if(head->date>p2->date)rn p2->next=head;rn head->next=NULL;rn head=p2;rn rn else p2->next=NULL;rn while(p1!=NULL)rn if(p1->datedate)rn p2=p1->next;rn p1->next=head;rn head=p1;rn p1=p2;rn rn elsern p3=head;rn p2=head->next;rn while(p1->date>p2->date&&p2!=NULL)rn p2=p2->next;rn p3=p3->next;rn rn if(p2!=NULL)rn p3->next=p1;rn p3=p1->next;rn p1->next=p2;rn p1=p3;rn rn elsern p3->next=p1;rn p3=p1->next;rn p1->next=NULL;rn p1=p3;rn rn rn rn printf("It's OK\n");rnrnrnvoid ShowList(L *head) //输出链表数据;rnrn L *p;rn if(head==NULL)printf("error:This List is empty.\n"); //如链表为空直接返回;rn else rn int i=1;rn p=head;rn do //从第一个结点开始输出所有数据;rn cout.width(10);rn cout<date;rn if(++i==5)cout<next;rn while(p!=NULL);rn printf("\nOK\n");rn rnrnvoid DAList(L*& head) //删除链表中数据与num相同的结点;rnrn int num;rn cin>>num;rn if(head==NULL)rn printf("this list is empty.\n");rn return;rn rn elsern L *p1,*p2;rn p1=head;rnrn while(p1!=NULL&&p1->date!=num)rn p2=p1;rn p1=p1->next;rn rn if(p1==NULL) printf("Can't find it.\n");rn elsern if(head->date==num)head=p1->next;rn else p2->next=p1->next;rn free(p1);rn rn rnrnrnvoid main()rnrn L* head;rn CreatList(head);rn ShouList(head);rn SortList(head);rn ShowList(head);rnrn编译能通过,但是排序结果有时错误,有时正确,请大虾们指点
对链表的操作与算法
一、非循环单链表插入节点伪算法 如上图所示,已知有一链表,要想在p所指向的节点的后面插入一个新的节点q,则有两种方法: 伪算法一: t = p->pNext; p->pNext = q; q->pNext = t;伪算法二: q->pNext = p->pNext; p->pNext = q;二、非循环单链表删除节点伪算法 如上图所示,已知有一链表,要想把p所指向的节点的后面
链表对两位数操作
通过对链表的操作使所有的两位数按从大到小排列,删去特定的书。补上特定的数。
对链表的基本的操作
#include #include #define ERROR 1 #define TRUE 0 typedef int ElemType; typedef struct node{ ElemType data; //数据域 struct node *next; //指针域 }LNode,*LinkList; int Length_LinkLi
关于对链表的操作
程序的目的是把两个单链表连接到一起。规则如下:rn设链表LA 的 长度为m,链表LB的长度为n.rn LA中的元素为(x1,x2,...,xn),LB中的元素为(y1,y2,...,yn)rn当m>=n时,连接后的结果为:rn(x1,y1,x2,y2,...,xn,yn,...,xm)rn当n>m时,(y1,x1,y2,x2,...,ym,xm,..,yn).rn我的程序如下:rn#includerntypedef struct linkrn int data;rn struct link *next;rnSQ;rn int m=0,n=0;rnSQ *creat_lA()rn SQ *r,*s,*h;rn int c;rn printf("Input data into lA:\n");rn scanf("%d",&c);rn if(c==-1)rn printf("The link lA is empty!\n");rn exit(0);rn rn s=(SQ *)malloc(sizeof(SQ));rn s->data=c;m++;rn h=s;r=s;rn s=(SQ *)malloc(sizeof(SQ));rn scanf("%d",&c);rn while(c!=-1)rn s->data=c;m++;/*统计链表A的长度*/rn r->next=s; r=s;rn s=(SQ *)malloc(sizeof(SQ));rn scanf("%d",&c);rn rn free(s);r->next=NULL;rn return h;rnrn SQ *creat_lB()rn SQ *r,*s,*h;rn int c;rn printf("Input data into lB:\n");rn scanf("%d",&c);rn if(c==-1)rn printf("The link lA is empty!\n");rn exit(0);rn rn s=(SQ *)malloc(sizeof(SQ));rn s->data=c;n++;/*统计链表B的长度*/rn h=s;r=s;rn s=(SQ *)malloc(sizeof(SQ));rn scanf("%d",&c);rn while(c!=-1)rn s->data=c;n++;rn r->next=s; r=s;rn s=(SQ *)malloc(sizeof(SQ));rn scanf("%d",&c);rn rn free(s);r->next=NULL;rn return h;rnrn SQ *linklAB(SQ *h1,SQ *h2)/*将两个链表连接*/rn SQ *r,*p,*k1,*k2;rn r=h1;p=h2;rn if(m>=n)rn while(p)rn k1=r->next; r->next=p;rn k2=p->next; r=k1;rn p->next=r; p=k2;rn rn return h1;rn rnelse rn rn while(r)rn k1=p->next; p->next=r;rn k2=r->next; p=k1; rn r->next=p;r=k2;rn rn return h2;rn rnrnPrint(SQ *h)rn printf("The result is lC:\n");rn while(h)rn printf("%4d",h->data);rn rnrnmain()rn SQ *h,*h1,*h2;rn h1=creat_lA();rn h2=creat_lB(); rn h=linklAB(h1,h2);rn Print(h);rn 程序一执行就进入死循环,请高手指点一下。
对链表的综合操作
struct Student *Head; struct Student *creatLink(void); void insert(struct Student *head, int n); void detel(struct Student *head); void printLink(struct Student *head); void menu() { int choose, n; printf(&quot;--------------------------
List 对链表的操作
这是一个关于链表的操作,包括创建、删除和插入节点。
对链表的各种操作
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #define ERROR 0 typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *LinkList; LNode creatL(LinkList &amp;L) { LNode...
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview