• C语言链栈


    链栈是用链表来表示的栈,其实质上还是链表,插入使用的是尾插法,只不过一直使用top指针来操作栈,而这个top指针就是main函数中的那个初始指针,入栈和出栈都是和链表一样的操作。可能唯一不同的就是在main函数中栈的初始化不需要分配空间(当然也可以分配空间,看个人实际代码操作)

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 typedef struct node{
     5     int data;
     6     struct node *next;
     7 }LinkStack;
     8 
     9 //判断是否为栈空 
    10 int isEmpty(LinkStack *ls){
    11     
    12     if(ls==NULL)
    13         return 1;
    14     return 0;
    15     
    16 }
    17 
    18 //出栈 
    19 LinkStack *outStack(LinkStack *ls){
    20     
    21     LinkStack *p = ls; 
    22     ls = p->next;
    23     free(p);
    24     return ls;
    25     
    26 }
    27 
    28 //入栈 
    29 LinkStack *inStack(LinkStack *ls,int e){
    30     
    31     LinkStack *p = (LinkStack *)malloc(sizeof(LinkStack));
    32     p->data = e;
    33     p->next = NULL;
    34     
    35     p->next = ls;
    36     ls = p;
    37     return ls;
    38     
    39 }
    40 
    41 //为了打印,迫不得已 
    42 void display(LinkStack *ls){
    43     
    44     LinkStack *p = ls;
    45     while(p!=NULL){
    46         printf("%d ",p->data);
    47         p = p->next;
    48     }
    49     
    50 }
    51 
    52 void main(){
    53     
    54     LinkStack *ls = NULL;            //这个指针就是top指针 
    55     int i,num[6] = {21,31,45,67,90,44};
    56     
    57     for(i=0;i<6;i++)
    58         ls = inStack(ls,num[i]);
    59         
    60     display(ls);
    61     
    62 }
  • 相关阅读:
    JavaScript-5(数组)
    JavaScript-作用域-预解析
    JavaScript-日历生成器
    JavaScript-8行5列表格
    package XXX.i386.rpm is not installed(检查在Linux上安装Oracle所需的pkg时)
    ubuntu13.04下安装jdk7
    Linux远程传输命令之scp使用方法
    Mac OS X中MacPorts安装和使用
    第一天 Linux 是什么
    Javascript与当前项目的思考
  • 原文地址:https://www.cnblogs.com/lsy-lsy/p/10027829.html
Copyright © 2020-2023  润新知