⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch4_7.c

📁 本内容为清华大学严蔚敏版数据结构部分算法实现代码
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -