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

请大家帮我看看这个简单操作

nikobelic 发布于 2012-11-04 15:05, 337 次点击
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct LNode
{
    int num;
    int passwd;
    struct LNode *next;
    struct LNode *prior;
}LNode;
void Creat(LNode *L,int n)
{
    LNode *p,*q;
    int i = 0;
    L = p = q = NULL;
    for(i = 1;i <= n;i++)
    {
        p = (LNode *)malloc(sizeof(LNode));
        scanf("%d",&p->passwd);
        p->num = i;
        if(L == NULL)
        {
            L = q = p;
        }
        else
        {
            q->next = p;
            p->prior = q;
            q = p;
        }
    }
    p->next = L;
    L->prior = p;
}
void Print(LNode *L)
{
    LNode *p;
    p = L;
    printf("%d ",p->passwd);
    p = p->next;
    while(p != L)
    {
        printf("%d ",p->passwd);
        p = p->next;
    }
}
void main()
{
    LNode L;
    int n , m ;
    scanf("%d%d",&m,&n);
    Creat(&L,n);
    Print(&L);
}
我在主函数中将节点地址传入,为什么不能成功创建 我调试的时候发现打印的p->passwd是乱码
2 回复
#2
nikobelic2012-11-04 15:05
我不希望用返回值来得到地址  而是希望用这种方法,应该是叫引用吧?
#3
两本正经的书2012-11-04 20:02
你L的声明在两个地方不一样,mian那里应该声明为指针形式。如果你不用指针的话,void Creat(LNode *L,int n)应该为void Creat(LNode &L,int n),还有后面那个函数。你调用的时候传过去的是一个可修改的结构跟你的函数声明的指针不一样,这个可能会发生错误。
1