c语言循环链队列函数引用 c语言链队列的基本操作

C语言循环队列问题求教

这个并没有错,可以根据图分开来算

创新互联公司是专业的海北州网站建设公司,海北州接单;提供成都做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行海北州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

front指针指向存储元素位置,rear指针指向第一个未存储元素位置

首先,队列上半部分,有元素,m-30+1;

其次,队列下半部分,有元素,10-1;

所以,总共的元素个数为total = m-30+1+10-1 = m-20

C语言 数据结构 循环队列插入操作

#includestdio.h

#includemalloc.h

struct link_cqueue

{

int data;

struct link_cqueue *next;

};

//初始化循环链队列

struct link_cqueue *init_link_cqueue()

{

struct link_cqueue *rear;

rear=NULL; /*队尾指针设置为空*/

return rear;

}

//(1)插入(即入队)算法:

struct link_cqueue *EnCQueue(struct link_cqueue *rear, int x)

{ //设循环链队列的队尾指针为rear,x为待插入的元素

struct link_cqueue *p;

p=(struct link_cqueue *)malloc(sizeof(struct link_cqueue));

p-data=x;

if(rear==NULL) //如为空队,建立循环链队列的第一个结点

{

rear=p;

rear-next=p; //链接成循环链表

}

else //否则在队尾插入p结点

{

p-next=rear-next;

rear-next=p;

rear=p;

}

return rear;

}

//(2)删除(即出队)算法:

struct link_cqueue *DeCQueue(struct link_cqueue *rear)

{ //设循环链队列的队尾指针为rear

if (rear==NULL) //空队

printf("队列为空无法删除!\n");

else if(rear-next==rear) //队中只有一个结点

rear=NULL;

else

rear-next=rear-next-next; //rear-next指向的结点为循环链队列的队头结点

return rear;

}

//循环队列的输出

void print_link_cqueue(struct link_cqueue *rear)

{

struct link_cqueue *p;

if(!rear)

printf("队列为空!\n");

else

{

printf("%5d",rear-next-data);

p=rear-next;

while(p!=rear)

{

printf("%5d",p-next-data);

p=p-next;

}

}

printf("\n");

}

main()

{

struct link_cqueue *rear;

int x;

int c;

rear=init_link_cqueue();

do

{

printf("请选择入队或出队操作:1:入队;2:出队;3:输出!\n");

scanf("%d",c);

if(c==1)

{

printf("请输入要入队的元素:");

scanf("%d",x);

rear=EnCQueue(rear,x);

}

else if(c==2)

{

rear=DeCQueue(rear);

}

else if(c==3)

print_link_cqueue(rear);

else

printf("选择错误,请重新选择");

}while(1);

}

c语言调用队列库函数

q.push(m); // queue是C++STL模板库的东西,需要使用push来插入元素,详细信息你可以参考MSDN来了解其使用及内容。


网站名称:c语言循环链队列函数引用 c语言链队列的基本操作
网页URL:http://myzitong.com/article/docpjjc.html