注册 登录
编程论坛 数据结构与算法

想不到创建单链表都令我抓狂,求代码改错。

千马弈 发布于 2012-03-25 11:11, 1172 次点击

各位大神,刚学数据结构,写了一段创建单链表的代码,但在vc6.0编译不过,很郁闷。
各位看看,能帮我改一下吗?
#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>
#define NUll 0

typedef struct LNode{
    int data;
    struct LNode *next;
}LinkList;




 void InitList(LinkList *p)
{LinkList *L;
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
}


 void CreatLIst(LinkList *L,int n)
{
 
InitList(LinkList *L);
LinkList *p;
int i;
for(i=n;i>0;i--)
{p=(LinkList*)malloc(sizeof(LinkList));
scanf(&p->data);
p->next =NULL;
L->next=p;
}


void main()
{}










5 回复
#2
千马弈2012-03-25 11:13
这是编译错误提示

D:\C语言\danlianbiao\dan.cpp(25) : error C2275: 'LinkList' : illegal use of this type as an expression
        D:\C语言\danlianbiao\dan.cpp(10) : see declaration of 'LinkList'
D:\C语言\danlianbiao\dan.cpp(30) : error C2664: 'scanf' : cannot convert parameter 1 from 'int *' to 'const char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
D:\C语言\danlianbiao\dan.cpp(37) : error C2601: 'main' : local function definitions are illegal
D:\C语言\danlianbiao\dan.cpp(49) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

dan.obj - 1 error(s), 0 warning(s)
#3
shuijiashui2012-03-25 22:43
你程序不健壮,看看下面我写的,
typedef struct node
{
    int data;
    struct node *next;
}Node;
   
Node *head=NULL;

Node* create()
{
    Node *p,*tail;
    p=(Node*)malloc(sizeof(Node));//申请一个节点
    scanf("%d",&p->data);
    head=p;
    if(p->data==0)//若节点为0;则创建失败
    {
        free(p);
        head=NULL;
        tail=NULL;
        return head;
    }

    while(p->data!=0)//头结点创建成功后,接着申请节点
    {
        tail=p;
        p=(Node*)malloc(sizeof(Node));
        scanf("%d",&p->data);
        if(p->data!=0)
            tail->next=p;
    }
    free(p);//节点为0,则尾节点的next指针为null
    tail->next=NULL;
    return head;
}
   
int main()
{
    Node *p=create();
    return 0;
}
#4
zhoufeng19882012-03-26 00:09
程序代码:
#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>
#define NUll 0

typedef struct LNode{
    int data;
    struct LNode *next;
}LinkList;




void InitList(LinkList *p)
{LinkList *L;
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
}


void CreatLIst(LinkList *L,int n)
{
    // 类型定义放在函数体开始处
    LinkList *p;
    int i;

    // 这儿传入形参即可
   
//InitList(LinkList *L);
    InitList(L);
    for(i=n;i>0;i--)
    {
        p=(LinkList*)malloc(sizeof(LinkList));
        scanf("%d", p->data);
        p->next =NULL;
        L->next=p;
    }
}
   
   
void main()
{}

   

VC6编译通过了。用UltraEdit比较下,我只是帮你简单修改,可以编译,具体问题你自己调试吧。
#5
千马弈2012-04-15 13:39
谢谢,我懂了
#6
ran55152012-04-15 19:36
四楼牛人
1