/*
本次程序主要实现数据链的存储和输出,并把输出的数值写在一个文件中
“本程序的主要代码是在定义 :
Lnode *p=L->next;//定义一个结点指针p指向头结点的下一个结点
”
还有数据链建立之后,数据链上得指针不能返回,只有利用创立的方法中调用修改数据链的方法(再写方法——方法中套方法)
*/
#include <stdio.h>
#include <stdlib.h>
// 第一一个数据链
typedef struct Lnode{
int date;
struct Lnode *next;
}Lnode;
//输出一个数据链中数值 ,并把输出的值保存到一个文件里
void dispList(Lnode *L)
{
FILE *f;
f = fopen("/Users/tarena0/Desktop/Lnode.txt", "w");
Lnode *p=L->next;//定义一个结点指针p指向头结点的下一个结点
while(p){ //如果p不为空则循环
printf("%d\n",p->date);
fprintf(f, "%d",p->date);
p=p->next;//移动指针p遍历链表
}
fclose(f);
}
//建立一个数据链,把数组中得数组存储到数据链中
void create(Lnode *l, int m[], int n){
//定义两个指针,一个用来保存头指针,另一个用来建立数据链
Lnode *s ,*r;
//申请一个数据链的一个节点
l = (Lnode*)malloc(sizeof(Lnode));
r = l;//用来保存头指针
l->next = NULL;//头节点清空
for (int i= 1; i<= n ; i++) {
s = (Lnode *)malloc(sizeof(Lnode));
//定义一个动态的数据链节点,用来申请空间,并建立数据链
printf("请输入第%d个数字:",i );
scanf("%d",&m[i]);
//数据链建立尾插法
s->date = m[i];
r->next = s;
r = r->next;
}
r->next = NULL;
dispList(l);
}
int main(int argc, const char * argv[])
{
int n;
int m[n];
Lnode *l;
printf("请输入数组长度n:");
scanf("%d",&n);
create(l, m, n );//方法调用
return 0;
}