栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构--链队列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构--链队列

链队列的相关操作:

#include 
#include  
#include 
#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("rn");
}
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("出队:%dn",rear);
	l=outputnode(l);
	printf("再次打印:") ;
	printqueue(l); 
}
int main(){
	testsample();
	return 0;
}

运行结果:

总结:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号