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

📄 ch4_6.c

📁 本内容为清华大学严蔚敏版数据结构部分算法实现代码
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
typedef struct list                      /* 声明链表结构 */
{
  int data;                                   /* 数据域 */
  struct list *link;                             /* 指针域 */
}node;
node *top=NULL;
void PUSH(int);                              /* 函数的声明 */
void POP(void);
void main( )
{
  node *ptr;
  int select=0;                              /* 用户的选择 */
  int input;
  while(select != 4)
  {
    printf("\n1.加入数据 2.删除数据 3.输出数据 4.离开? ");
    scanf("%d", &select);
    switch(select)
    {
      case 1:
        printf("请输入数据:");
        scanf("%d", &input);
        PUSH(input);                       /* 加入结点至栈 */
        break;
      case 2:
        POP( );                           /* 自栈中删除结点 */
        break;
      case 3:
        printf("栈中的内容为:");
        for(ptr=top; ptr!=NULL; ptr=ptr->link)
          printf("[%d]", ptr->data);
        printf("\n");
        break;
      case 4:
        printf("Bye bye!\n");
        break;
      default:
        printf("\n没有这个选择!\n");
    }
  }
}

void PUSH(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=top;
  top=new_node;
}

void POP(void)                          /* 栈中删除数据的函数 */
{
  node *del_node;
  if(!top)
  {
    printf("栈中没有数据可供删除!\n");
    return;
  }
  del_node=top;
  printf("被删除的数据为:%d\n", del_node->data);
  top=del_node->link;
  free(del_node);                                 /* 归还内存 */
}

⌨️ 快捷键说明

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