一个简单的链表的初始化和输出 问题一堆 帮我看看

allen0228 2008-11-06 11:21:04

#include <stdio.h>
#include<malloc.h>
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

/***create LinkList begin***/
void CreateList(LinkList &L,int n)
{
int i;
FILE *fp;
fp=fopen("sort.txt","r");
L=(LinkList)malloc(sizeof(LNOde));
L->next=NULL;
for(i=n;i>0;--i)
{
if(fp)
{
p=(LinkList)malloc(sizeof(LNode));
fscanf(fp,"%d",&p->data);
p->next=L->next;
L->next=p;
}
}
fclose(fp);
}
/***create LinkList end***/


/***Print LinkList begin***/
void PrintList(LinkList &L)
{
int *p=L;
while(p->next!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
/***Print LinkLIst end***/

int main()
{
void CreateList(LinkList &L,int n);
void LinkList(LinkList &L);
LinkList L;
CreateList(L,MaxSize);
PrintList(L);
return 0;
}






一年没写这东西了 怎么发现问题这么大啊
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen0228 2008-11-06
  • 打赏
  • 举报
回复
这个没有问题了 我错在什么地方啊
allen0228 2008-11-06
  • 打赏
  • 举报
回复
还是有问题
xiaoyuer5222 2008-11-06
  • 打赏
  • 举报
回复

#include <stdio.h>
#include<malloc.h>
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

/***create LinkList begin***/
void CreateList(LinkList L,int n)
{
int i;
FILE *fp;
LinkList p;

fp=fopen("sort.txt","r");
//L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;

for(i=n;i>0;--i)
{
if(fp)
{
p=(LinkList)malloc(sizeof(LNode));
fscanf(fp,"%d",&p->data);
p->next=L->next;
L->next=p;

}
}

fclose(fp);
}
/***create LinkList end***/


/***Print LinkList begin***/
void PrintList(LinkList L)
{

LinkList p;
p=L;
while(p->next!=NULL)
{
printf("%d ",p->next->data);
p=p->next;
}
}
/***Print LinkLIst end***/

int main()
{

//LinkList L;
LNode L;
CreateList(&L,MaxSize);
PrintList(&L);
return 0;
}
假如文件sort.txt里面的内容是:1 2 3 4 5 6 7 8 9 10
则,输出结果为:
10 9 8 7 6 5 4 3 2 1 Press any key to continue
devil_zuiai 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hzc191025 的回复:]
C/C++ code
#include <stdio.h>
#include<malloc.h>
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

/***create LinkList begin***/
void CreateList(LinkList &L,int n)
{
int i;
FILE *fp;
fp=fopen("sort.txt","r");
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{
if(fp)
{

[/Quote]

顶一下。
hzc191025 2008-11-06
  • 打赏
  • 举报
回复

#include <stdio.h>
#include<malloc.h>
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

/***create LinkList begin***/
void CreateList(LinkList &L,int n)
{
int i;
FILE *fp;
fp=fopen("sort.txt","r");
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{
if(fp)
{
LinkList p = NULL;// add p declaration
p=(LinkList)malloc(sizeof(LNode));
fscanf(fp,"%d",&p->data);
p->next=L->next;
L->next=p;
}
}
fclose(fp);
}
/***create LinkList end***/


/***Print LinkList begin***/
void PrintList(LinkList &L)
{
LinkList p=L;// modified to LinkList
while(p->next!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
/***Print LinkLIst end***/

int main()
{
void CreateList(LinkList &L,int n);
void PrintList(LinkList &L);// 函数声明错误

LinkList L;
CreateList(L,MaxSize);
PrintList(L);
return 0;
}
pingzi_1119 2008-11-06
  • 打赏
  • 举报
回复
PrintList()这个函数接收的参数应该是链表头head,从第一个开始往下打印
但是你这个程序运行到PrintList(L)这句时,L指向的是链表的结尾,肯定打印不出什么
楼主应该在主函数中定义一个head节点,让CreateList()函数接收这个节点后创建链表,注意不要改变这个节点的位置
然后在主函数中调用PrintList()时,传入head这个节点。
allen0228 2008-11-06
  • 打赏
  • 举报
回复
输出段 可能有问题
改为
/***Print LinkList begin***/
void PrintList(LinkList &L)
{
int *p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
/***Print LinkLIst end***/
bxhzct 2008-11-06
  • 打赏
  • 举报
回复
要想在sort.txt中显示,把fscanf改作fprintf!!
bxhzct 2008-11-06
  • 打赏
  • 举报
回复
我在linux下运行可以的,代码如下!
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

/***create LinkList begin***/
LinkList CreateList(LinkList L,int n)
{
int i;
FILE *fp;
LinkList p;
fp=fopen("./sort.txt","wr");
L=(LinkList)malloc(sizeof(LNode));
L->data=0;
L->next=NULL;
for(i=n;i>0;--i)
{
if(fp)
{
p=(LinkList)malloc(sizeof(LNode));
fscanf(fp,"%d",p->data=i);
p->next=L->next;
L->next=p;
}
}
fclose(fp);
return L;
}
/***create LinkList end***/


/***Print LinkList begin***/
void PrintList(LinkList L)
{
LinkList p=L;
while(p->next)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
/***Print LinkLIst end***/

int main()
{
LinkList L,p;
p=CreateList(L,MaxSize);
PrintList(p);
return 0;
}
yiduoxuehua 2008-11-06
  • 打赏
  • 举报
回复
#include <stdio.h>
#include<malloc.h>
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

/***create LinkList begin***/void CreateList(LinkList &L,int n)
{
LinkList p;
int i;
FILE *fp;
fp=fopen("sort.txt","r");
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{
if(fp)
{
p=(LinkList)malloc(sizeof(LNode));
fscanf(fp,"%d",&p->data); // L 中并未存储数据 p->next=L->next;
L->next=p;
}
}
fclose(fp);
}
/***create LinkList end***/


/***Print LinkList begin***/
void PrintList(LinkList &L)
{
LinkList p=L->next; // 从L的后继开始
while(p->next!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("%d\n", p->data); // 最后一个结点仍存有数据}
/***Print LinkLIst end***/

int main()
{
LinkList L;
CreateList(L,MaxSize);
PrintList(L);
return 0;
}

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧