请C语言高手帮我编写几个数据结构的小程序~(一定要用C++编写噢~)谢啦~

栏目:资讯发布:2023-11-19浏览:2收藏

请C语言高手帮我编写几个数据结构的小程序~(一定要用C++编写噢~)谢啦~,第1张

#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++编写噢~)谢啦~

#include"stdioh"#include"malloch"#define MaxSize 10typedef char ElemType ;typedef struct{ElemType data[MaxSize]; int fron...
点击下载
热门文章
    确认删除?
    回到顶部