数据结构学习-栈与队列(2)
2016-04-03 23:11
381 查看
问题描述:
输入n个10以内的数,每输入i,就把它插入到第i号队列中。最后把10个队列中非空队列,按列号从小到大的顺序串成一条链,并输出该链的所有元素。代码:
#include <iostream> #include <malloc.h> using namespace std; typedef struct node { int data; struct node *next; }QNode; typedef struct { QNode *front; QNode *rear; }LiQueue; void Insert(LiQueue *qu[],int x) { QNode *p; p=(QNode*)malloc(sizeof(QNode)); p->data=x; p->next=NULL; if(qu[x]->rear==NULL) qu[x]->front=qu[x]->rear=p; else { qu[x]->rear->next=p; qu[x]->rear=p; } } void Link(LiQueue *qu[],LiQueue *&p) { int first=1; for(int i=0;i<10;i++) { if(qu[i]->front!=NULL&&first==1) { p->front=qu[i]->front; p->rear=qu[i]->rear; first=0; } if(qu[i]->front!=NULL&&first==0) { p->rear->next=qu[i]->front; p->rear=qu[i]->rear; } } } void Distroy(LiQueue *&q) { QNode *p=q->front,*r; if(p!=NULL) { r=p->next; while(r!=NULL) { free(p); p=r; r=r->next; } } free(p); free(q); } int main() { LiQueue *qu[10]; for(int i=0;i<10;i++) { qu[i]=(LiQueue*)malloc(sizeof(LiQueue)); qu[i]->front=qu[i]->rear=NULL; } cout<<"n:"; int x,n,i; cin>>n; for(i=0;i<n;i++) { do { cout<<"第"<<i+1<<"个数:"; cin>>x; }while(x<0||x>9); Insert(qu,x); } LiQueue *p; Link(qu,p); cout<<"所有元素:"; QNode *h=p->front; while(h!=NULL) { cout<<h->data<<" "; h=h->next; } Distroy(p); return 0; }
运行结果:
最后想说:
这个程序有bug,在最后执行完最后一步的时候,会弹窗提示已停止工作。目前脑子已经完全混乱,待日后修补。
求高人指点。
相关文章推荐
- 数据结构中的各种排序
- 数据结构之:简简单单学会栈
- 数据结构笔记之查找算法
- 数据结构与算法分析(读书笔记):1.引论
- 数据结构实验2-2
- 数据结构实验2-1
- Java数据结构篇
- 数据结构---哈希表(KV模式)(除留余数法)
- 数据结构与算法设计(读书笔记):2.算法分析
- 轻松理解KMP算法
- 数据结构中双指针的使用
- 数据结构笔记及Java实现 (排序)
- 数据结构之“堆”
- 数据结构学习-栈和队列(1)
- 算法改变世界——《算法之美——隐匿在数据结构背后的原理(C++版)》
- 《数据结构》之串的模式匹配算法——KMP算法
- 数据结构学习-线性表(2)
- 数据结构 - 知识点
- 数据结构 - ★知识点
- 数据结构学习-线性表(1)