请C语言高手帮我编写几个数据结构的小程序~(一定要用C++编写噢~)谢啦~
#include"stdioh"
#include"malloch"
#define MaxSize 10
typedef char ElemType ;
typedef struct
{
ElemType data[MaxSize]; int front,rear;
}SqQueue;
void InitQueue(SqQueue &q) //初始化队列
{
q=(SqQueue )malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
void ClearQueue(SqQueue &q) //销毁队列
{ free(q); }
int QueueEmpty(SqQueue q) //判断队列是否为空
{ return(q->front==q->rear); }
int enQueue(SqQueue &q,ElemType e) //入队列
{
if((q->rear+1)%MaxSize==q->front) return 0;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e; return 1;
}
int deQueue(SqQueue &q,ElemType &e) //出队列
{
if(q->front==q->rear) return 0;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front]; return 1;
}
void numQueue(SqQueue q) //输出队列元素个数
{
if(q->rear>=q->front)
printf("这个队列的元素个数为:%d\n",q->rear-q->front);
else
printf("这个队列的元素个数为:%d\n",MaxSize-q->front+q->rear);
}
void DispQueue(SqQueue q) //输出队列
{
int i=0,f=q->front+1;
while((f+MaxSize)%MaxSize!=q->rear)
{
printf("%c\t",q->data[f]);
f++; i++;
if(i%5==0)printf("\n");
}
printf("%c\n",q->data[f]);
}
void main()
{
SqQueue q;
ElemType e;
InitQueue(q);
if(QueueEmpty(q))printf("这个队列是空的!\n");
else printf("这个队列不是空的!\n");
enQueue(q,'a'); enQueue(q,'b'); enQueue(q,'c');
if(deQueue(q,e)==1)
printf("出对元素为:%c\n此时",e);
numQueue(q);
enQueue(q,'d'); enQueue(q,'e'); enQueue(q,'f');
printf("def进队列后,");
numQueue(q);
printf("它的元素有:\n");
DispQueue(q);
ClearQueue(q);
}
这是我以前的作业,你自己组织下,应该可以解决你的问题
#include "stdioh"
#include "stdlibh"
#include "malloch"
typedef struct Bnode //二叉树节点类型
{
int m;
struct Bnode Lchild,Rchild;
}Btnode, BTptr;
typedef struct Dnode //队列节点类型
{
Btnode pr;
struct Dnode next;
}Qnode,Qlink;
typedef struct //q节点类型
{
Qnode front,rear;
}linkqueue;
void Lcreatqueue(linkqueue q) //创建队列
{
q->front=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
q->rear=q->front;
}
Btnode Getqtop(linkqueue Q)
{
return(Q->front->pr);
}
void Enqueue(linkqueue q,Btnode e) //入队
{
Qlink p;
p=(Qlink)malloc(sizeof(Qnode));
p->pr=e;
p->next=NULL;
if(q->front==NULL)q->front=p;
else
q->rear->next=p;
q->rear=p;
}
Btnode DeQueue(linkqueue q) //出队
{ Qlink p;
if(q->front==q->rear) return(NULL);
else
{
p=q->front;
q->front=p->next;
free(p);
return(q->front->pr);
}
}
BTptr creatbtree(BTptr BT)
{
int i=1;
linkqueue Q=NULL;
BTptr q;
//BTptr s;
Btnode p,Del;
Q=(linkqueue )malloc(sizeof(linkqueue));
Lcreatqueue(Q);
Q->rear=Q->front=NULL;
BT=NULL;
while(i<=n)
{p=NULL;
p=(BTptr)malloc(sizeof(Btnode));
p->Lchild=p->Rchild=NULL;
p->m=i;
Enqueue(Q,p);
if(i==1)BT=p;
else
{
q=Getqtop(Q); //q指向二叉树的指针
if(p&&q)
if(i%2==0)q->Lchild=p;
else q->Rchild=p;
if(i%2==1) Del=DeQueue(Q);
}
i++;
}
return(BT);
}
main()
{BTptr p=NULL;
p=creatbtree(p);
}
还是希望你自己会去编一遍
请C语言高手帮我编写几个数据结构的小程序~(一定要用C++编写噢~)谢啦~
本文2023-11-19 04:12:46发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/506264.html