zoukankan      html  css  js  c++  java
  • LIFO栈 ADT接口 实现十进制转其他进制

    LIFO 接口 Stack.h

     1 //LIFO 链栈初始化
     2 void InitStack(Stack top){
     3 //LIFO 链栈判断栈空
     4  boolean StackKEmpty(Stack top){
     5 //LIFO 链栈进栈
     6  void Push(Stack top, ElemType x){
     7 //LIFO 链栈出栈
     8  ElemType Pop(Stack top){
     9 //LIFO 链栈读取栈顶
    10  ElemType GetTop(Stack top){

    LIFO 接口 链表实现 LinkedStack.c

     1 //LIFO 链栈初始化
     2 void InitStack(Stack top){
     3      top = NULL;
     4 }
     5 
     6 //LIFO 链栈判断栈空
     7 boolean StackKEmpty(Stack top){
     8      if(top == NULL) return true;
     9      else return false;
    10 11 
    12 //LIFO 链栈进栈
    13 void Push(Stack top, ElemType x){
    14      LinkedStack p;
    15      p = malloc(sizeof *p);
    16      p -> data =x;
    17      p -> next = top;
    18      top = p;
    19 }
    20 
    21 //LIFO 链栈出栈
    22 ElemType Pop(Stack top){
    23      LinkedStack p;
    24      ElemType x;
    25      if(top == NULL){
    26         printf("栈下溢错误!
    ");
    27         exit(1);
    28      }
    29      p = top;
    30      x = p -> data;
    31      top = top -> next;
    32      free(p);
    33      return x;
    34 }
    35 
    36 //LIFO 链栈读取栈顶
    37 ElemType GetTop(Stack top){
    38      if(top == NULL){
    39         printf("栈下溢错误! 
    ");
    40         exit(1);
    41      }
    42      return top -> data;
    43 }

    LIFO 接口 数组实现 SeqStack.c

     1 //LIFO 顺序栈 初始化
     2 void InitStack(Stack s){
     3      s -> top = -1;
     4 }
     5 
     6 //LIFO 顺序栈判断栈空
     7 boolean StackEmpty(Stack s){
     8      if(s -> top == -1) return true;
     9      else return false;
    10 }
    11 
    12 //LIFO 顺序栈判断栈满
    13 boolean StackFull(Stack s){
    14      if(s -> top == MaxSize-1) return true;
    15      else return false;
    16 }
    17 
    18 //LIFO 顺序栈进栈
    19 void Push(Stack s, ElemType x){
    20      if(s->top == MaxSize-1){
    21         printf("栈满溢出错误!
    ");
    22         exit(1);
    23      }
    24      s -> top++;
    25      s -> data[s>top] = x;
    26 }
    27 
    28 //LIFO 顺序栈出栈
    29 ElemType Pop(Stack s){
    30      if(StackEmpty(s){
    31         printf("栈下溢错误!
    ");
    32         exit(1);
    33      }
    34      x = s->data[s->top];
    35      s -> top--;
    36      return x;
    37 }
    38 
    39 //LIFO 顺序栈读取栈顶元素
    40 ElemType GetTop(Stack s){
    41      if(StackEmpty(s){
    42         printf("下溢错误!
    ");
    43         exit(1);
    44      }
    45      return s -> data[s -> top];
    46 }

    进制转换程序 main.c

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<Stack.h>
     4 
     5 void transForm(int m, int n);
     6 
     7 int main(void){
     8 
     9     printf("将十进制数转换为任意进制数实例:
    ");
    10     transForm(1567, 8);
    11     transForm(1567, 6);
    12     transForm(1567, 4);
    13     transForm(1567, 2);
    14 }
    15 
    16 void transForm(int m, int n){
    17     int k;
    18     int mm = m;
    19 
    20     Stack S;
    21     InitStack(&S);
    22     while(m != 0){
    23     k = m % n;
    24     Push(S, k);
    25     m /= n;
    26     }
    27     
    28     printf("十进制数%d转换为%d    进制数为:",mm, n);
    29     while(! StackEmpty(&S)){
    30     k = Pop(S, k);
    31     printf("%d", k);
    32     }
    33     putchar('
    ');
    34 }

     

  • 相关阅读:
    Javascript 入门 document
    JavaScript 入门 (一)
    Python 之 Json序列化嵌套类
    [20171113]修改表结构删除列相关问题3.txt
    [20171113]修改表结构删除列相关问题2.txt
    [20171113]修改表结构删除列相关问题.txt
    [20171110]_allow_read_only_corruption参数.txt
    [20171107]dbms_shared_pool.pin补充.txt
    [20171107]dbms_shared_pool.pin.txt
    [20171106]修改show spparameter的显示宽度.txt
  • 原文地址:https://www.cnblogs.com/WALLACE-S-BOOK/p/9728719.html
Copyright © 2011-2022 走看看