标题:请大家帮我看看这个简单操作
只看楼主
nikobelic
Rank: 2
等 级:论坛游民
帖 子:37
专家分:30
注 册:2012-5-26
结帖率:25%
已结贴  问题点数:5 回复次数:2 
请大家帮我看看这个简单操作
#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是乱码
搜索更多相关主题的帖子: next include 
2012-11-04 15:05
nikobelic
Rank: 2
等 级:论坛游民
帖 子:37
专家分:30
注 册:2012-5-26
得分:0 
我不希望用返回值来得到地址  而是希望用这种方法,应该是叫引用吧?
2012-11-04 15:05
两本正经的书
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2012-11-4
得分:5 
你L的声明在两个地方不一样,mian那里应该声明为指针形式。如果你不用指针的话,void Creat(LNode *L,int n)应该为void Creat(LNode &L,int n),还有后面那个函数。你调用的时候传过去的是一个可修改的结构跟你的函数声明的指针不一样,这个可能会发生错误。
2012-11-04 20:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-385873-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.194120 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved