zoukankan      html  css  js  c++  java
  • 数据结构::栈

    栈
    限定仅在表尾进行 插入 或 删除 操作的线性表。
    栈顶:表尾端。
    栈底:表头端。
    应用:数制转换,行编辑程序,树的遍历等。
    凡是对数据的处理具有“后进先出/LIFO”的特点,都可以用栈这种数据结构来操作。
    通过链表实现栈
    /*=========================================================================
      工程名称:    通过链表实现栈:后进先出
      组成文件:    main.c
      功能描述:    通过链表管理栈,通过栈顶指针进行进出栈操作
      程序分析:    有关栈的链表,它的指针域应该是向前指的,即通过最后节点往前遍历    
    =========================================================================*/
     
    //进栈算法
    #include "stdio.h"
    #include <stdlib.h>
    typedef struct node
    {
        int data;
        struct node *link;
    }NODE;
     
    //栈底
    NODE *top;
     
    int push(int x)
    {   
        NODE *temp = (NODE *) malloc(sizeof(NODE));
        //将数据插入节点
        temp->data=x;                
        
        //得到上一个节点地址,第一次top为NULL所以栈底的link指向NULL
        temp->link = top;        
        top = temp;
        return 0;
    }
     
    int pop(int *py)
    {
        NODE *temp=top;
     
        if (top == NULL)                //判断是否栈空
        {
            printf("stach empty!");
            return -1;
        }
        else
        {
            *py = top->data;        //将栈中数据读出
            top = top->link;        //如果是栈底,则link=top=NULL
            free (temp);
            return 0;
        }
     
    }
    int main()
    {
        int result,y;
        int i,op,value;
     
        top=NULL;
         while(1)
         {
            printf("1:push 2:pop 3:clearstack input:");
            scanf("%d",&op);
            switch(op)
            {
                case 1:
                    scanf("%d",&value);
                    if(push(value) == -1)
                        printf("insert error
    ");
                    break;
                case 2:
                    if(pop(&y) == -1)
                        printf("pop error
    ");
                    printf("%d
    ",y);
                    break;
                case 3:
                    break;
                default:
                    break;
            }
            printf("top = %d
    ",top);
        }
    }
  • 相关阅读:
    Index(4.3)
    第七次会议(4.22)
    第六次会议(4.15)
    第五次会议(4.8)
    第四次会议(4.2)
    第三次会议(3.25)
    第二次扩大会议(3.19)
    第二次会议(3.25)
    第一次会议(3.11)
    牛客练习赛25A求1-x因数和(离散求和)
  • 原文地址:https://www.cnblogs.com/osbreak/p/14526802.html
Copyright © 2011-2022 走看看