该程序包含了链队的置空、判断是否为空、入栈、出栈和取栈顶元素几种基本 *** 作
#include
#include //malloc和free都需要这个系统库函数头文件;
typedef struct node//这里一定要有结构体变量名
{
int data;
struct node *next; //此处是嵌套的作用,相当于新建了一个该结构体变量的子集,所以需要加上结构体类型名才能实现 ,顺序表则不需要;
}queuenode;
queuenode *front;
queuenode *rear;
void initqueue() //队置空;
{
front=rear=NULL;
}
int queueempty() //判断队是否为空;
{
return rear==NULL;
}
int enquere(int x) //入队
{
queuenode *p;
p=(queuenode *)malloc(sizeof(queuenode));
if(p==NULL)
{
puts("申请存储空间失败");return 0;
}
p->data=x;
p->next=NULL;
if(queueempty())
front=rear=p;
else
{
rear->next=p;
rear=p;
}
return 1;
}
int queuefront(int *y) //取对头元素;
{
if(queueempty())
{
puts("队空");return 0;
}
else
{
*y=front->data;return 1;
}
}
int dequeue(int *z) //出队
{
queuenode *q;
if(queueempty())
{
puts("队空");return 0;
}
q=front;
*z=front->data;
q->next=front; //此处如果下一个没有元素的话,front自然就为空了;
if(rear==q) //此处不能等于front,因为front已经指向了NULL; 如果不止一个元素,则rear不需要做任何 *** 作;
rear=NULL; //如果最后一个元素出队了,那么rear就只能指向空了;
free(q);
return 1;
}
void main()
{
int x=3,y,z;
initqueue();
printf("是否为空:%d\n",queueempty());
printf("入队是否成功:%d\n",enquere(x));
printf("取队头元素是否成功:%d\n",queuefront(&y));
printf("对头元素为:%d\n",y);
printf("出队是否成功:%d\n",dequeue(&z));
printf("出队元素为:%d\n",z);
}
各位兄弟,如果这篇文章对你有那么一点点的帮助的话,就给我一点鼓励点个赞吧,兄弟我在这里谢谢大家啦!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)