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);
        }
    }
  • 相关阅读:
    最近半年
    CentOS 6.4和Eclipse Juno CDT(4.2.2)的bug
    cygwin/X XDMCP连接CentOS
    手把手教你emacs cedet C/C++自动补全
    ProFont – 识别度极高的终端字体
    ACE之旅——环境搭建、HelloWorld
    静态链表在优化中的应用
    ACE之旅——第一个ACE通讯程序daytime
    ThinkPHP 自定义标签测试 冰糖
    FreeTextBox使用详解 (版本3.1.1)
  • 原文地址:https://www.cnblogs.com/osbreak/p/14526802.html
Copyright © 2011-2022 走看看