标题:为链队列添加一组数据
只看楼主
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
已结贴  问题点数:20 回复次数:3 
为链队列添加一组数据
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(LinkQueueNode)

typedef struct Node
{
    int data;
    struct Node* next;
}LinkQueueNode;

typedef struct
{
    LinkQueueNode* f;
    LinkQueueNode* l;
}LinkQueue;

void InitNode(LinkQueue *q)
{
    q->f=(LinkQueueNode *)malloc(len);
    if(q->f!=NULL)
    {
        q->l=q->f;
        q->f->next=NULL;
    }
}

void EnterQueue(LinkQueue *q,int a[],int x)
{
    LinkQueueNode *NewNode;
    for(int i=0;i<x;i++)
    {
        NewNode=(LinkQueueNode *)malloc(len);
        if(NewNode!=NULL)
        {
            NewNode->data=a[i];
            NewNode->next=NULL;
            q->l->next=NewNode;
            q->l=NewNode;
        }
    }
}

void PrintQueue(LinkQueue *q)
{
    LinkQueueNode *s;
    q->f=s;
    for(;s!=NULL;s=s->next)
    {
        printf("%-3d",s->data);
    }
    printf("\n");
}

int main()
{
    int x;
    LinkQueueNode *NewNode;
    LinkQueue q;
    InitNode(&q);
    printf("请输入队列的长度:\n");
    scanf("%d",&x);
    int a[x];
    printf("请输入队列中的元素:\n");
    for(int i=0;i<x;i++)
        scanf("%d",&a[i]);
    EnterQueue(&q,a,x);
    printf("列中的元素为:\n");
    PrintQueue(&q);
    free(NewNode);
    return 0;
}

编译没问题,执行报错。
搜索更多相关主题的帖子: 队列 int next NULL printf 
2017-10-14 23:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
void PrintQueue(LinkQueue *q)
{
    LinkQueueNode *s;
    q->f=s;
这时的q->f指向一个未定义的s,是否要这样 s=q->f
另:只看到在InitNode时q->f->next=NULL,在EnterQueue时q->f没动静了?

[此贴子已经被作者于2017-10-15 08:02编辑过]

2017-10-15 06:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
测试了一下,EnterQueue是从第2个节点起输入数据。
有效数据应是从q->f->next起:
void PrintQueue(LinkQueue *q)
{
    LinkQueueNode *s;
    s=q->f->next;
    for(;s!=NULL;s=s->next)
    {
        printf("%-3d ",s->data);
    }
    printf("\n");
}
2017-10-15 11:16
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 

只看到在InitNode时q->f->next=NULL,在EnterQueue时q->f没动静了?[/quote]

InitNode时q->f->next=NULL是初始化空节点。EnterQueue时有    NewNode->next=NULL;把最后一个节点的next设为空了啊???
2017-10-15 11:22



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




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

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