1、 结构关系:R=|ai,ai+1 D 基本操作: InitQueue(LinkQueue *Q) 操作前提:Q是一个未初始化的链接队列 操作结果:将Q初始化为一个空的链接队列 EnQueue(LinkQueue *Q, QElemType e) 链接队列Q已存在将元素e插入到链接队列中 DeQueue(LinkQueue *Q, QElemType *e)将链接队列Q中队头元素删除,删除的元素值通过e返回 0utputQueue(LinkQueue Q)操作结果:将链接队列Q中的元素显示到屏幕上 本程序包含5个函数: 主函数main() 初始化链接队列函数 InitQueue() 进队函数En
2、Queue() 出队函数DeQueue() 输出队列中元素函数 OutputStack()各函数调用关系:主函数main调用其他四个函数 主函数的伪码main() 定义变量i,n,m; 定义一个LinkQueue 变量Lq 初始化 Lq;输入队列元素的个数; For循环(i=1;ifront=Q-rear=申请新结点;Q-front-next=NULL;(2)进队 void Push(SqStack &S,int e)定义QueuePtr变量 p;p=申请新的空间;如果申请失败,结束程序 p-data=e;如果是第一个元素则Q-next=p;rear-rear=p;(3)出队int Pop(S
3、qStack *S,int e) 如果队空则返回0;p=Q-next; *e=p-data;next=p-如果Q-rear=p则Q-rear=Q-front;;释放p的空间;返回1;(4)输出元素int OutputQueue(LinkQueue Q) p=Q.front-while(p) printf(%d ,p-data); p=p- n); 返回1; 类型定义typedef struct int *base; int front; int rear;SqQueue;void InitQueue(SqQueue &Q) Q.base=申请新的空间;如果申请失败,结束程序;Q.front=Q
4、.rear=0;int EnQueue(SqQueue *Q,int e) 如果队满了则返回1;baseQ-rear=e;rear=(Q-rear+1)%MAXQSIZE;返回0;出队int DeQueue(SqQueue *Q,int *e)DeQueue(SqQueue *Q,int *e) 如果队空则返回1; *e=Q-front;front=(Q-front+1)%MAXQSIZE; void outPutQMeue(SqQueue *Q) 定义整型变量i;For循环(i=Q-rear;输出Q-basei;换行;5调试分析 调试是出现错误,经过检查发现在某些地方分号用中文表示,出现空指
5、针问题。出现空指针问题,内存不能读取等6使用说明(1)链接队列:程序执行过程如下:提示用户输入元素个数;用户按要求输入一个整型数;程序输出构造好的链接队列;调用出队函数,并把剩余元素显示在屏幕上;(2)环型队列:提示用户输入队列元素个数;程序用输入的整型数构建一个环型队列,并输出队列元素;调用出栈函数,删除栈顶,显示栈中元素;7测试结果构造一个空的链接队列后,屏幕显示:请输入队列的元素个数:输入5后,屏幕显示建立的队列元素:1 2 3 4 5调用出队函数后,屏幕显示:2 3 4 5建立空队列,程序运行后屏幕显示:输入队列元素的长度屏幕显示队列的元素:接着屏幕又显示:队列中的第一个元素为:1调用
6、出队函数,然后输入队列中元素:8. 参考文献数据结构(c语言版)9附录源程序文件如下: #includestdio.h typedef struct QNode int data; struct QNode *next; QNode,*QueuePtr; typedef struct QueuePtr front; QueuePtr rear; LinkQueue; void InitQueue(LinkQueue *Q)rear=(QNode *)malloc(sizeof(QNode); void EnQueue(LinkQueue *Q,int e) QueuePtr p; p=(Que
7、uePtr)malloc(sizeof(QNode); if(!p)exit(1); p- if(Q-next=NULL) Q- Q- int DeQueue(LinkQueue *Q,int *e)front=Q-rear)return 0; p=Q- *e=p-rear=p)Q- free(p); return 1; int OutputQueue(LinkQueue Q) if(Q.front=Q.rear)return 0; p=Q.front- while(p) printf( p=p- void main() int i,n; int m; LinkQueue Lq;构造一个空的链
8、接队列 InitQueue(&Lq);n请输入队列的元素个数: scanf(%d,&n); for(i=1; EnQueue(&Lq,i);队列中的元素为: OutputQueue(Lq); DeQueue(&Lq,&m);删除队列中的第一个元素n此时队列中的元素为: #define MAXQSIZE 100 typedef struct int *base; int front; int rear; SqQueue; void InitQueue(SqQueue & Q.base=(int *)malloc(MAXQSIZE*sizeof(int);Q.base)exit(1); Q.fro
9、nt=Q.rear=0; int EnQueue(SqQueue *Q,int e) if(Q-rear+1)%MAXQSIZE=Q-front)return 1; return 0; int DeQueue(SqQueue *Q,int *e)rear)return 1; *e=Q- void outPutQMeue(SqQueue *Q) int i; for(i=Q- printf(,Q-basei); SqQueue sq; int n,i,m;构造空的环型队列n InitQueue(sq);请输入队列的长度:sq,i);队列的元素为: outPutQMeue(&sq); DeQueue(&sq,&队列中的第一个元素为:,m);n删除对头元素,输出队列元素:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1