| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 872 人关注过本帖
标题:来一次网吧不容易小弟一次把问题问完啦呵呵
取消只看楼主 加入收藏
墨香555
Rank: 2
等 级:论坛游民
帖 子:115
专家分:31
注 册:2010-10-21
结帖率:96.15%
收藏
已结贴  问题点数:20 回复次数:2 
来一次网吧不容易小弟一次把问题问完啦呵呵
我在家自学数据结构 但遇到了些问题怎么想就想不通
这是队列的入队操作
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
    int data;
    struct node *next;
}NODE,*LQNODE;
void create(LQNODE *front,LQNODE *rear)
{
    *front=(NODE *)malloc(sizeof(NODE));
    (*front)->next=NULL;
    *rear=*front;                    ( A )                              
}
void push(LQNODE *rear,int x)
{
    NODE *p;
    p=(NODE *)malloc(sizeof(NODE));
    p->data=x;
    p->next=NULL;                       (*rear)->next=p;
    *rear=p;
}
void print(LQNODE *front)
{
    NODE *p;
    p=(*front)->next;
    while(p!=NULL)
    {
        printf("%d",p->data);
        p=p->next;
    }
}
void main()
{
    LQNODE front,rear;
    int x=0,i;
    create(&front,&rear);
    printf("请输入5个元素:");
    for(i=0;i<5;i++)
    {
        scanf("%d",&x);
        push(&rear,x);

    }
    print(&front);
}
问题 1:我就想不明白为什么在 A处得代码 改为*front=*rear 程序就运行不成功呢
问题2:还有为什么队头指针front和队尾指针rear不能用NODE 定义呢?
我把他们改成用NODE 定义后的代码为:
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
    int data;
    struct node *next;
}NODE;
void create(NODE *front,NODE *rear)
{
    front=(NODE *)malloc(sizeof(NODE));
    front->next=NULL;
    rear=front;

}
void push(NODE *rear,int x)
{
    NODE *p;
    p=(NODE *)malloc(sizeof(NODE));
    p->data=x;
    p->next=NULL;            
    rear->next=p;
    rear=p;
}
void print(NODE *front)
{
    NODE *p;
    p=front->next;
    while(p!=NULL)
    {
        printf("%d",p->data);
        p=p->next;
    }
}
void main()
{
    NODE *front,*rear;
    rear=front=(NODE*)malloc(sizeof(NODE));
    int x,i;
    create(front,rear);
    printf("请输入5个元素:");
    for(i=0;i<5;i++)
    {
        scanf("%d",&x);
        push(rear,x);

    }
    print(front);
}
问题3:但为什么运行的结果却是:
请输入5个元素:6 5 4 3 2
2Press any key to continu
问题4:
还有个队列的出队问题请看以下代码
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
    int data;
    struct node *next;
}NODE,*LQNODE;
void create(LQNODE *front,LQNODE *rear)
{
    *front=(NODE *)malloc(sizeof(NODE));
    (*front)->next=NULL;
    *rear=*front;
}
void push(LQNODE *rear,int x)
{
    NODE *p;
    p=(NODE*)malloc(sizeof(NODE));
    p->data=x;
    p->next=NULL;
    (*rear)->next=p;
    *rear=p;
}
void out(LQNODE *front,LQNODE *rear,int x)
{
    NODE *p;
    if(*front!=*rear)
    {
        p=(*front)->next;
        (*front)->next=p->next;/*注意出队方式若改成*front=p->next;free(p);则再次出队时将出错因为p=(*front)->next*/
        if(p->next==NULL)      /*注意出队一个元素后一定要判断队是否为空*/
            *rear=*front;
        x=p->data;
    free(p);
}
void print(LQNODE *front)
{
    NODE *p;
    p=(*front)->next;
    if(p!=NULL)
    {
        printf("output the linkqueue:");
        while(p!=NULL)
        {
            printf("%d",p->data);
            p=p->next;
        }
    }
    else
    {
        printf("为空队列");
    }
}
void main()
{
    LQNODE front,rear;
    int i,x,y;
    create(&front,&rear);
    print(&front);
    printf("元素:");
    for(i=0;i<5;i++)
    {
        scanf("%d",&x);
        push(&rear,x);
    }
    print(&front);
    out(&front,&rear,y);
    printf("%d",y);
    print(&front);
}
这个出队的代码提示出错:
:\Documents and Settings\Administrator\tyj.cpp(36) : error C2601: 'print' : local function definitions are illegal
C:\Documents and Settings\Administrator\tyj.cpp(54) : error C2601: 'main' : local function definitions are illegal
C:\Documents and Settings\Administrator\tyj.cpp(70) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

tyj.exe - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: next void include create 网吧 
2011-07-26 18:46
墨香555
Rank: 2
等 级:论坛游民
帖 子:115
专家分:31
注 册:2010-10-21
收藏
得分:0 
回复 4楼 qijun4588
谢谢你的答案 原来我把问题想复杂啦 呵呵
2011-07-27 18:29
墨香555
Rank: 2
等 级:论坛游民
帖 子:115
专家分:31
注 册:2010-10-21
收藏
得分:0 
问题4是我疏忽大意 少了个括号 还有问题3大家帮忙解决
为什么运行的结果却是:
请输入5个元素:6 5 4 3 2
2Press any key to continu
2011-07-27 18:35
快速回复:来一次网吧不容易小弟一次把问题问完啦呵呵
数据加载中...
 
   



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

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