主题:[讨论]请高手帮我看下,错在哪
Alex2009
[专家分:0] 发布于 2008-10-09 17:05:00
#include <stdio.h>
#include <malloc.h>
#define NULL 0
typedef struct Lnode
{
char data;
struct Lnode *next;
} linklist,*p,*L;
int n;
createlist(n)
{
int i;
p=NULL;
L=(linklist*)malloc(sizeof(Lnode));
printf("input head data:/n");
scanf("%c",&linklist->data);
for(i=1;i<n;i++)
{
p=(linklist*)malloc(sizeof(Lnode));
printf("input p data:/n");
scanf("%c",&p->data);
p->next=linklist->next;
L->next=p;
}
}
main()
{
printf("input a number:/n");
scanf("%d",n);
createlist(n);
}
回复列表 (共3个回复)
沙发
elegant87 [专家分:700] 发布于 2008-10-11 17:26:00
//你的程序漏洞太多啊!
//我大概改了改!你参考一下吧!
#include <stdio.h>
#include <malloc.h>
#define NULL 0
typedef struct Lnode
{
char data;
struct Lnode *next;
} linklist ;
void createlist(int n) //建立链表,并初始化
{
int i;
linklist *head,*p,*L;
L=(linklist*)malloc(sizeof(Lnode));
head=L;
printf("input data: ");
for(i=1;i<=n;i++)
{
p=(linklist*)malloc(sizeof(Lnode));
scanf("%c",&p->data);
L->next=p;
L=p;
}
}
void main()
{
int n;
printf("input a number: ");
scanf("%d",&n);
createlist(n);
}
板凳
佳人佳仁 [专家分:30] 发布于 2008-10-11 17:32:00
你好像也是初学者?你的好多写法很不规范,我按照你的想法改了一下,其实编写字符串没那么复杂,你可以看看字符串的输入何输出函数,直接调用更方便!如gets()和puts();
下面是帮你改了的程序:
#include <stdio.h>
#include <malloc.h>
typedef struct Lnode
{
char data;
struct Lnode *next;
}linklist;
linklist* createlist()
{
int i;
linklist *p,*L,*s;
L=(linklist*)malloc(sizeof(linklist));
s=L;
printf("input head data:\n");
p=(linklist*)malloc(sizeof(linklist));
scanf("%c",&p->data);
while(p->data!='\n')
{
s->next=p;
s=p;
p=(linklist*)malloc(sizeof(linklist));
scanf("%c",&p->data);
}
s->next=NULL;
return L;
}
print_linklist(linklist *L)
{
linklist *p;
p=L->next;
if(!p)
printf("it is empty");
else
while(p)
{printf("%c",p->data);p=p->next;}
printf("\n");
}
main()
{
linklist *L;
L=createlist();
print_linklist(L);
getch();
}
用的是win-tc,如果用其他编译只要把getch()去掉就ok了!
3 楼
Alex2009 [专家分:0] 发布于 2008-10-12 23:57:00
呵呵,谢谢了啊,刚学数据结构,还有很多东西要向各位请教哦
1
我来回复