c++,链队列的基本操作(创建,销毁,查找,删除,插入等)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
链队列的基本操作(创建,销毁,查找,删除,插入等)
#include <iostream>
using namespace std;
const bool TRUE=1 ;
const bool FALSE=0;
typedef int QElemType;
typedef struct LNode
{
QElemType data;
Q.front=Q.rear;
}//while
}// DestroyQueue_L
bool QueueEmpty_L(LinkQueue Q)
{//判断队列是否为空,是则返回TRUE,否则返回FALSE
if(Q.front==Q.rear)return TRUE;
else return FALSE;
if(Q.front==Q.rear)return FALSE;
LinkList p;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)Q.rear=Q.front;//队列中只有一个结点的情况
delete p;
return TRUE;
QueueCreat_L(Q,A,5);
QueueTraverse_L(Q);cout<<QueueLength(Q)<<endl;
int f;
cout<<GetHead(Q,f)<<endl;
int e=6;
EnQueue_L(Q,e);
cout<<"将元素"<<e<<"插入到队尾后链表队列为:";QueueTraverse_L(Q);
{
//若队列不为空则用e返回Q的队头元素并返回TRUE,;否则返回FALSE
if(Q.front==Q.rear)return FALSE;
QueuePtr p=Q.front->next;
e=p->data;
return TRUE;
}//QetHead
void EnQueuBiblioteka Baidu_L(LinkQueue &Q,QElemType e)
Q.front=Q.rear=new LNode;
Q.front->next=NULL;
}//InitQueue_L
void DestroyQueue_L(LinkQueue &Q)
{
//销毁链队列结构Q
while(Q.front){
Q.rear=Q.front->next;
delete Q.front;
struct LNode *next;
}LNode ,*LinkList;
typedef LinkList QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void InitQueue_L(LinkQueue &Q)
{//构造一个只有头结点的空队列Q
}//DeQueue_L
void QueueTraverse_L(LinkQueue Q)
{
//遍历函数
LinkList p;
p=Q.front->next;
while(p)
{
cout<<p->data;
p=p->next;
}
cout<<endl;
}//QueueTraverse_L
void QueueCreat_L(LinkQueue &Q,int A[] ,int n)
}//QueueEmpty
int QueueLength(LinkQueue Q)
{
//返回Q的元素个数
int k=0;
QueuePtr p;
p=Q.front;
while(p){p=p->next;k++;}
k--;
return k;
}//QueueLength
bool GetHead(LinkQueue Q,QElemType &e)
{
//将数组A[]中的元素赋给链队列
for(int i=0;i<n;i++)EnQueue_L(Q,A[i]);
}//QueueCreat_L
void main()
{
int A[]={1,2,3,4,5};
LinkQueue Q;
InitQueue_L(Q);int i=QueueEmpty_L(Q);cout<<i<<endl;
{
//插入元素e为链队列Q中新的队尾元素
LinkList p;
p=new LNode;
p->data=e;p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}//EnQueue_L
bool DeQueue_L(LinkQueue &Q,QElemType &e)
{
//若队列不空,则删除Q的对头元素,用e返回其值,并返回TRUE;否则返回FALSE
if(DeQueue_L(Q,e)){cout<<"删除队头元素e,链队列为:";QueueTraverse_L(Q);}
else cout<<"链队列为空"<<endl;
DestroyQueue_L(Q);
}//main
相关文档
最新文档