2008秋季-计算机软件基础-0922课堂用例(2)

复制代码
/*---------------------------------------------------------
 Title: Link Queue(链队列) 链队列-链式存储结构的队列 
  请先阅读教材74-77页, 2.4.1-2.4.4节, 队列的定义及基本运算
 (注意:以下程序为简化后的,仅供入门学习之用)
----------------------------------------------------------
*/
#include
<stdio.h>
#include
<stdlib.h>
//定义队列的结构
struct queueNode
{
   
int data;//存放数据元素
   struct queueNode * next;//指针,指向下一个结点
};
struct queue
{
    
struct queueNode * front;
    
struct queueNode * rear;
};

//初始化队列
struct queue * InitialQueue()
{
 
struct queue * head;
 
struct queueNode * node;
 node
=(struct queueNode *)malloc(sizeof(struct queueNode ));
 head
=(struct queue *)malloc(sizeof(struct queue ));
 node
->next=NULL;
 head
->front=node;
 head
->rear=node;
 
return head;
}

//入队列
void EnterIntoQueue(struct queue * head, int value)
{
    
struct queueNode * node;
    node
=(struct queueNode *)malloc(sizeof(struct queueNode ));
    node
->data=value;
    node
->next=NULL;
    head
->rear->next=node;
    head
->rear=node;
    
 }

//出队列
void DeleteFromQueue(struct queue * head)
{
    
struct queueNode * node;
 
if(head->front==head->rear)
 {
     printf(
"Queue is empty, Delete failed\n");
 }
 
else
    {
    node
=head->front->next;
    head
->front->next=node->next;
    free(node);
    
// when there is only one element, the following is necessary.
     if(head->front->next==NULL)
     head
->rear=head->front;
    }
}

//显示队列中所有元素
void ShowAllElements(struct queue * head)
{
 
struct queueNode * node;
 printf(
"\n Show all elements: \n");
 node
=head->front->next;
 
while(node!=NULL)
 {
  printf(
" %d ",node->data);
  node
=node->next;
 }
}

void main()
{
    
struct queue * head1;
    head1
=InitialQueue();

    ShowAllElements(head1);
    EnterIntoQueue(head1,
11);
    ShowAllElements(head1);
    EnterIntoQueue(head1,
22);
    ShowAllElements(head1);
    DeleteFromQueue(head1);
    ShowAllElements(head1);
}



复制代码
posted @   emanlee  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示