| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 381 人关注过本帖
标题:程序运行提示出错,请帮忙修改一下!
只看楼主 加入收藏
纪昌武
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2010-11-2
结帖率:33.33%
收藏
 问题点数:0 回复次数:1 
程序运行提示出错,请帮忙修改一下!
//(三)链式队列基本操作
//1、队列结点定义
//根据实际处理数据的类型定义链队中结点的值域类型ElemType
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
typedef int ElemType;

typedef  struct node                 //队列结点类型定义
{   ElemType data;                 //队列的数据元素类型
     struct node  *link;             //指向后继结点的指针
}NODE;

struct QueueLk{                         //定义链队
    NODE *front,*rear;        //定义链队队头和队尾指针
};


//2、入队
NODE  *ldcr(struct QueueLk *QL,ElemType x)  //将元素x插入到链队列rear中,作为rear的新队尾
{   
    NODE *p;
    p=(NODE *)malloc(sizeof(NODE));
    p->data=x;
    p->link=NULL;  //置新结点的指针为空
      if(QL->front==NULL)        //队列为空
    QL->front=QL->rear=p;                              
    else
        QL->rear->link=p;                      //将链队列中最后一个结点的指针指向新结点
        QL->rear=p;                              //将队尾指向新结点
    return  QL->rear;
}
//3、出队
ElemType ldsc(struct QueueLk *QL)  //若链队列不为空,则删除队头元素,返回其元素值
{  
   NODE *s;
   ElemType x;
   if(QL->rear==QL->front)                 //队空,退出程序
       exit(1);  
   
s=QL->front;                //取队头保存在s中
   QL->front=QL->front->link;                       //删除队头结点
   if(QL->front->link==NULL)     //如果删除后队列为空,则处理队尾指针
       QL->rear=QL->front;
   x=s->data;                  //将刚才出队的结点值给x
    free(s) ;                               //释放出对结点的空间
   return x;
}


     main()
{
     int n,choice;
     ElemType e;
     struct QueueLk *s;
     while(choice)
     {
     printf("                 *-----------------菜单如下-----------------*\n");
     printf("                 *                                          *\n");
     printf("                 *            1.......入队列                *\n");
     printf("                 *                                          *\n");
     printf("                 *            2.......出队列                *\n");
     printf("                 *                                          *\n");
     printf("                 *            0........退出                 *\n");
     printf("                 *                                          *\n");
     printf("                 *------------------------------------------*\n\n");
     printf("请输入选择的操作:");
     scanf("%d",&choice);
   
     switch(choice)                 
             {
 case 1:
               
                    printf("请输入要入队的元素:");
              
                      scanf("%d",&e);
                     
                      ldcr(&s,e);
                    
                printf("入队成功!\n");
                break;
 case 2:
              printf("请输入要出队的元素:");
              scanf("%d",&n);
              printf("出队的元素为:\n",n);
              printf("%d ",ldsc(s));
              printf("\n");
              printf("出队成功!\n");
              break;
 
 case 0:
         printf("退出运行!");
         break;

 }
}
 return 0;
}
搜索更多相关主题的帖子: 提示 运行 
2010-11-29 12:21
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:0 
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
typedef int ElemType;

typedef  struct node                 //队列结点类型定义
{   ElemType data;                 //队列的数据元素类型
     struct node  *link;             //指向后继结点的指针
}NODE;

struct QueueLk{                         //定义链队
    NODE *front,*rear;        //定义链队队头和队尾指针
};


//2、入队
NODE  *ldcr(struct QueueLk *QL,ElemType x)  //将元素x插入到链队列rear中,作为rear的新队尾
{   
    NODE *p;
    p=(NODE *)malloc(sizeof(NODE));
    p->data=x;
    p->link=NULL;  //置新结点的指针为空
      if(QL->front==NULL)        //队列为空
    QL->front=QL->rear=p;                              
    else
        QL->rear->link=p;                      //将链队列中最后一个结点的指针指向新结点
        QL->rear=p;                              //将队尾指向新结点
    return  QL->rear;
}
//3、出队
ElemType ldsc(struct QueueLk *QL)  //若链队列不为空,则删除队头元素,返回其元素值
{  
   NODE *s;
   ElemType x;
   if(QL->rear==QL->front)                 //队空,退出程序
       exit(1);  
   
s=QL->front;                //取队头保存在s中
   QL->front=QL->front->link;                       //删除队头结点
   if(QL->front->link==NULL)     //如果删除后队列为空,则处理队尾指针
       QL->rear=QL->front;
   x=s->data;                  //将刚才出队的结点值给x
    free(s) ;                               //释放出对结点的空间
   return x;
}


     main()
{
     int n,choice;
     ElemType e;
     struct QueueLk *s;
     while(choice)
     {
     printf("                 *-----------------菜单如下-----------------*\n");
     printf("                 *                                          *\n");
     printf("                 *            1.......入队列                *\n");
     printf("                 *                                          *\n");
     printf("                 *            2.......出队列                *\n");
     printf("                 *                                          *\n");
     printf("                 *            0........退出                 *\n");
     printf("                 *                                          *\n");
     printf("                 *------------------------------------------*\n\n");
     printf("请输入选择的操作:");
     scanf("%d",&choice);
   
     switch(choice)                 
             {
case 1:
               
                    printf("请输入要入队的元素:");
              
                      scanf("%d",&e);
                     
                      ldcr(&s,e);            //这里改为ldcr(s,e);
                    
                printf("入队成功!\n");
                break;
case 2:
              printf("请输入要出队的元素:");
              scanf("%d",&n);
              printf("出队的元素为:\n",n);
              printf("%d ",ldsc(s));
              printf("\n");
              printf("出队成功!\n");
              break;

case 0:
         printf("退出运行!");
         break;

}
}
return 0;
}

运行中有没有错我不知道,如果有的话你就自己调了吧.

经验积累中............
2010-11-29 12:26
快速回复:程序运行提示出错,请帮忙修改一下!
数据加载中...
 
   



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

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