| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1216 人关注过本帖
标题:数据结构-队列实现的问题
只看楼主 加入收藏
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:3 
数据结构-队列实现的问题
感觉结构混乱的很,没有算法那么清晰,帮忙看看。多谢!!
//#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//using namespace std;

typedef int QElemType;

typedef struct QNode{
    QElemType data;
    struct QNode *next;
}Queue,*QueuePtr;

typedef struct
{
    QueuePtr front;
    QueuePtr rear;
}LinkQueue;
//===========初始化队列
void InitQueue(LinkQueue &Q)
{
   Q.front=Q.rear = (QueuePtr)malloc(sizeof(QNode));
   if(!Q.front)//////
       exit(1);
   Q.front.next=NULL;
}
//==============入队列
void EnQueue(LinkQueue &Q,QElemType e)
{
    p=(QueuePtr ) malloc (sizeof(QNode));//==========error
    if(!p)
    {
        //cout<<"内存不足!\n";   
        exit(1);
    }
    p.data=e;
    p.next=NULL;
    Q.rear.next=p;
    Q.rear=p;   
}
//==============出队列
void DeQueue(LinkQueue &Q,QElemType &e)
{
    if(Q.front==Q.rear)
        exit(1);
    p=Q.front.next;
    e=p.data;
    Q.front.next=p.next;
    if(Q.rear==p)
        Q.rear=Q.front;
    free(p);
}
//===============销毁队列
void DestroyQueue(LinkQueue &Q)
{
    while(Q.front)
    {
        Q.rear=Q.front.next;
        free(Q.front);
        Q.front=Q.rear;
    }
}

int main()
{
//
}
搜索更多相关主题的帖子: 数据结构 队列 
2008-03-11 00:42
pointer
Rank: 1
来 自:安徽宿州
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-3-8
收藏
得分:0 
路过
你这是C++设计的,有没有C语言版的啊!

老老实实做人,踏踏实实做事,不求最好,但求更好!
2008-03-15 19:54
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
回复 2# 的帖子
几乎都是c的语法啊.
我感觉入队列的函数中有问题.

上善若水,水善利万物而不争,处众人之所恶
2008-03-16 22:49
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
改了下,还是有问题
问题出在DeQueue函数。
//#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//using namespace std;

typedef int QElemType;

typedef struct QNode{
    QElemType data;
    struct QNode *next;
}Queue,*QueuePtr;

typedef struct
{
    QueuePtr front;
    QueuePtr rear;
}LinkQueue;
//==================初始化队列=======================
void InitQueue(LinkQueue &Q)
{
   Q.front=Q.rear = (QueuePtr)malloc(sizeof(QNode));
   if(!Q.front)//////
       exit(1);
   Q.front->next=NULL;
}
//===================入队列=========================
void EnQueue(LinkQueue &Q,QElemType e)
{
    QNode *p;
    p=(QueuePtr) malloc (sizeof(QNode));//==========error
    if(!p)
    {
        //cout<<"内存不足!\n";   
        exit(1);
    }
    p->data=e;
    p->next=NULL;
    Q.rear->next=p;
    Q.rear=p;   
}
//====================出队列========================
void DeQueue(LinkQueue &Q,QElemType &e)
{
    //printf("Invoke DeQueue.");
    if(Q.front->next==Q.rear)//
        exit(1);
    QNode *p;
    p=(QueuePtr) malloc (sizeof(QNode));//==========error
    p=Q.front->next;
    e=p->data;
    Q.front->next=p->next;
    if(Q.rear==p)
        Q.rear=Q.front;
    free(p);
//    printf("Invoke success.");not execute.
}
//===================销毁队列========================
void DestroyQueue(LinkQueue &Q)
{
    while(Q.front)
    {
        Q.rear=Q.front->next;
        free(Q.front);
        Q.front=Q.rear;
    }
}
//===================打印队列=========================
void DisplayQueue(LinkQueue &Q)
{
    QueuePtr p=Q.front->next;
//    while(Q.front->next)
    while(p)
    {
    //    printf("%d",Q.front->next->data);
        printf(" %d ",p->data);
        Q.front=Q.front->next;
        p=Q.front->next;
    //    p=p->next;
    }
}
int main()
{
    const int n=5;
    int a[n],
        i,
        e;
    LinkQueue Q;
    InitQueue(Q);
    for(i=0;i<n && scanf("%d",&a[i]);i++);
    for(i=0;i<n;i++)
    {
        EnQueue(Q,a[i]);
    }
    DisplayQueue(Q);
    printf("\n===================\n");
    for(i=0;i<n;i++)
    {
        DeQueue(Q,e);
        printf("\n 出队列的元素为:\n ");
        printf("%d \n",e);
    }
    return 0;
}

上善若水,水善利万物而不争,处众人之所恶
2008-03-23 13:17
快速回复:数据结构-队列实现的问题
数据加载中...
 
   



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

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