数据结构--链队列

链队列的相关操作:

#include <stdio.h>
#include  <malloc.h>
#include <stdlib.h>
#define MAX_SIZE 100
#define OVERFLOW 1
typedef struct LinkNode_{
	int data;
	LinkNode_ *next;
}LinkNode,*linknode;

typedef struct LinkQueue_{
	linknode front;
	linknode rear;
}LinkQueue ,*linkqueue;

linkqueue initqueue(){
	linkqueue resultptr=(linkqueue)malloc(sizeof(LinkQueue));
	linknode headnode=(linknode)malloc(sizeof(LinkNode));
	headnode->next=NULL;
	headnode->data=-1;
	resultptr->front=headnode;
	resultptr->rear=headnode;
	return resultptr;
} 
void printqueue(linkqueue l){
	if(l->front==l->rear){
		printf("队列为空!\n");
		exit(OVERFLOW); 
	}
	for(linknode p=l->front->next;p;p=p->next)
	{
		printf("%d ",p->data);
	}
	printf("\r\n");
}
linkqueue addnode(linkqueue l,int var){
    linknode p=(linknode)malloc(sizeof(LinkNode));
    p->data=var;
    p->next=NULL;
    l->rear->next=p;
    l->rear=p;
    return l;
}
linkqueue outputnode(linkqueue l){
    if (!l->front->next){
    	printf("队列为空!\n");
    	exit(OVERFLOW);
    }
    linknode q=l->front->next;
    l->front->next=l->front->next->next;
    q=NULL;
    free(q);
    return l;
}
int outputdata(linkqueue l){
	if (!l->front->next){
		printf("队列为空!\n");
		exit(OVERFLOW);
	}
	return l->front->next->data;
}
void testsample(){
	linkqueue l=initqueue();
	l=addnode(l,1);
	l=addnode(l,2);
	l=addnode(l,3);
	l=addnode(l,4);
	printqueue(l);
	int rear=outputdata(l);
	printf("出队:%d\n",rear);
	l=outputnode(l);
	printf("再次打印:") ;
	printqueue(l); 
}
int main(){
	testsample();
	return 0;
}

运行结果:

总结:

写队列的相关操作时要注意与栈区分(先进先出),其他好像就没啥可总结的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值