zoukankan      html  css  js  c++  java
  • 链式栈的基本操作

      1 #include<stdio.h>
      2 #include<string.h>
      3 #include<stdlib.h>
      4 typedef int ElemType;
      5 /*链栈结点*/ 
      6 typedef struct Node{
      7        ElemType data;
      8        struct Node *next;
      9 }LinkStackNode;
     10 /*链栈结构*/
     11 typedef struct{
     12        LinkStackNode *top;
     13        int length;
     14 }LinkStack; 
     15 //初始化链式栈
     16 void InitStack(LinkStack *S){
     17     S->top=NULL;
     18     S->length=0;
     19     printf("初始化成功
    ");
     20 }
     21 //入栈
     22 int Push(LinkStack *S){
     23     int n;
     24     LinkStackNode *x=(LinkStackNode*)malloc(sizeof(LinkStackNode));
     25         if(x==NULL){
     26             return printf("申请空间失败
    "); 
     27         }
     28         printf("请输入你想入栈的数
    ");
     29         scanf("%d",&n);
     30          x->data=n;
     31          x->next=S->top;//插入一个新结点在头部 
     32          S->top=x;//将头结点指针指向该结点 
     33          S->length++;
     34         return printf("入栈成功
    ");
     35 } 
     36 //出栈 
     37 int Pop(LinkStack *S){
     38     if(S->top==NULL){
     39         return printf("栈内以空
    ");
     40     }
     41     int x;
     42     LinkStackNode *temp=S->top;//将temp指针指向头结点; 
     43     //移动栈顶指针
     44     S->top=temp->next;//将头结点指针指向temp指针的下一位 
     45     S->length--; 
     46     x=temp->data;
     47     free(temp); //释放temp 
     48     printf("出栈成功
    ");
     49     printf("出栈的值为%d",x);
     50 }
     51 //获取栈顶 
     52 int GetTop(LinkStack *S){
     53     LinkStackNode *p=S->top;
     54     if(S->top==NULL){
     55     return printf("栈内暂无元素
    ");
     56     } 
     57     return printf("栈顶的数为%d
    ",S->top->data); 
     58 } 
     59 //求栈的长度
     60 int GetLength(LinkStack *S){
     61            int n=1;
     62            LinkStackNode *p=S->top;
     63            while(p->next!=NULL){
     64                 p=p->next;
     65                 n++;
     66            }
     67            return printf("栈长度为%d
    ",n);
     68 } 
     69 int main(){
     70     LinkStack S;
     71     int x;
     72     InitStack(&S);
     73     while(true){
     74   printf("|||||||||||||||||||||||||||||||||||||||||||||||
    ");
     75   printf("||  1:入栈                                  ||
    ");
     76   printf("||  2:出栈                                  ||
    ");
     77   printf("||  3:查看栈顶元素                          ||
    ");
     78   printf("||  4:查看栈长度                            ||
    ");
     79   printf("||  (输入-1退出系统)                         ||
    ");
     80   printf("|||||||||||||||||||||||||||||||||||||||||||||||
    ");
     81         int n;
     82         printf("请输入操作序号:
    ");
     83         scanf("%d",&n);
     84         switch(n){
     85             case 1 :
     86                 Push(&S); 
     87                 break;
     88             case 2 :
     89 //                Pop(&S,&x);
     90 //                printf("出栈的值为%d
    ",x); 
     91                 Pop(&S);
     92                 break;
     93             case 3 :
     94                 GetTop(&S);
     95                 break;     
     96             case 4 :
     97                 GetLength(&S);
     98                 break;     
     99             case -1:
    100                 return 0;            
    101 
    102          }   
    103 }
    104 }
    105  
  • 相关阅读:
    优化MySchool数据库(存储过程)
    优化MySchool数据库(事务、视图、索引)
    优化MySchool数据库(四)
    优化MySchool数据库(三)
    SQLAchemy
    python操作mysql
    python队列
    零碎知识
    super深究
    Python操作RabbitMQ
  • 原文地址:https://www.cnblogs.com/longlonglonglong/p/10984311.html
Copyright © 2011-2022 走看看