ch4_7.c

来自「本内容为清华大学严蔚敏版数据结构部分算法实现代码」· C语言 代码 · 共 80 行

C
80
字号
#include<stdio.h>
#include<stdlib.h>
typedef struct list                      /* 声明链表结构 */
{
  int data;                             /* 数据域 */
  struct list *link;                       /* 指针域 */
}node;
node *front=NULL;
node *rear=NULL;
void ADDQ(int);                      /* 函数的声明 */
void DELETEQ(void);
void main( )
{
  node *ptr;
  int select=0;
  int input;                         /* 用户的选择 */     
  while(select != 4)
  {
    printf("1.加入数据 2.删除数据 3.输出数据 4.离开? ");
    scanf("%d", &select);
    switch(select)
    {
      case 1:
        printf("请输入数据: ");
        fflush(stdin);
        scanf("%d", &input);
        ADDQ(input);               /* 加入结点至队列 */
        break;
      case 2:
        DELETEQ( );               /* 自队列中删除结点 */
        break;  
      case 3:
        printf("队列中的内容为: ");
        for(ptr=front; ptr!=NULL; ptr=ptr->link)
          printf("[%d]", ptr->data);
        printf("\n");
        break;
      case 4:
        printf("Bye bye!\n");
        break;
      default:
        printf("没有这个选择\n");
    }
  }
}
                               
void ADDQ(int entry)              /* 自队列的尾端加入结点 */
{
  node *new_node;
  new_node=(node *)malloc(sizeof(node));   /* 配置内存空间 */
  if(new_node == NULL)                 /* 检查内存指针 */
  {
    printf("内存配置失败!\n");
    exit(1);                            /* 结束程序 */
  }
  new_node->data=entry;
  new_node->link=NULL;
  if(rear == NULL)
    front=rear=new_node;
  else
  {
    rear->link=new_node;
    rear=new_node;
  }
}

void DELETEQ(void)            /* 自队列的前端删除结点 */
{
  node *del_node;
  if(!front)
  {
    printf("队列中没有数据可供删除!\n");
	return;
  }
  del_node=front;
  front=del_node->link;
  printf("被删除的数据为: %d\n", del_node->data);
  free(del_node);                        /* 归还内存 */
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?