首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

懂得用C语言实现数据结构的近来啊帮个忙!队列有关问题

2012-02-17 
懂得用C语言实现数据结构的近来啊,帮个忙!!!队列问题#include stdio.h#include malloc.h#include con

懂得用C语言实现数据结构的近来啊,帮个忙!!!队列问题
#include <stdio.h>
#include <malloc.h>
#include <conio.h>


typedef   int   Status;
typedef   int   QElemType;


#define   NULL   0
#define   OVERFLOW   -2
#define   OK   1
#define   ERROR   0


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

typedef   struct   {
QueuePtr   front;
QueuePtr   rear;
}LinkQueue;

Status   InitQueue(LinkQueue   *Q)/*队列生成*/
{Q-> front=Q-> rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q-> front)exit(OVERFLOW);
Q-> front-> next=NULL;
return   OK;
}


Status   EnQueue(LinkQueue   *Q,QElemType   e)/*向队列输入元素*/
{
QueuePtr   p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)exit(OVERFLOW);
p-> data=e;p-> next=NULL;
Q-> rear-> next=p;
Q-> rear=p;
return   OK;
}


void   main()
{int   i,n;
LinkQueue   *Q;
  QElemType   e;
  QueuePtr   p;
  InitQueue(Q);

printf( "\ninput   QElem   please!e= ");
scanf( "%d ",&e);

EnQueue(Q,e);
printf( "Now   you   have   insert   a   QElem,that   is   %d ",p-> data);
}


我是用C语言在TC2.0上实现的,但出现了错误


[解决办法]
Status InitQueue(LinkQueue *Q)/*队列生成*/
{Q-> front=Q-> rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q-> front)exit(OVERFLOW);
Q-> front-> next=NULL;
return OK;
}

在这个函数里面的Q,
与在main函数那里的
LinkQueue *Q;
QElemType e;
QueuePtr p;
InitQueue(Q);
出了问题.

因为你在main里面的LinkQueue *Q只是一个指针,而没有空间.你希望在InitQueue函数里对Q进行申请空间操作,那么最简单的改法是把你的

Status InitQueue(LinkQueue *Q)/*队列生成*/
改为
Status InitQueue(LinkQueue *&Q)/*队列生成*/

指针的引用,这样在函数InitQueue里的指针Q就相当于main那里的Q,对它进行的操作都可以带回到main函数那边

热点排行