zoukankan      html  css  js  c++  java
  • 顺序栈进制转换

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 typedef int DataType;
      4 struct seqStack
      5 {//有3个数据成员
      6     int MAXNUM;//用于记录顺序栈中能存放的最大元素个数的 整型 MAXNUM
      7     int top;//用于存放顺序栈的栈顶位置,初始化为0或-1 均可  整型  curNum
      8     DataType *element;//用于存放顺序栈数据元素的连续空间的起始地址
      9 };
     10 typedef struct seqStack *PseqStack;
     11 
     12 
     13 PseqStack createNullStack_seq(int m);
     14 void convert(int data , int k);
     15 int isNullStack_seq(PseqStack L);
     16 int isFullStack_seq(PseqStack L);
     17 int push_seq(PseqStack L ,DataType x);
     18 
     19 int main() {
     20     int m ,x;
     21     scanf("%d%d",&m,&x);
     22     convert(m,x);
     23     return 0;
     24 }
     25 
     26 PseqStack createNullStack_seq(int m)
     27 {//此处填写代码,创建一个空的顺序栈,能存放的最大元素个数为 m,栈顶top设置为0
     28     //若m=0,则返回NULL
     29     if(m==0){
     30         return 0;
     31     }
     32     PseqStack stack = (PseqStack)malloc(sizeof(struct seqStack));
     33     if(stack!=NULL){
     34         stack->element = (DataType*)malloc(sizeof(DataType)*m);
     35         stack->MAXNUM=m;
     36         stack->top=0;
     37     }
     38     return stack;
     39 }
     40 
     41 //第二关
     42 int isNullStack_seq(PseqStack L)
     43 {
     44     //判断顺序栈是否为空,若为空,返回值为1,否则返回值为0,若栈不存在,则返回-1
     45     if(L==NULL){
     46         return -1;
     47 
     48     }
     49     if(L->top==0){
     50         return 1;
     51     }
     52     return 0;
     53 }
     54 
     55 
     56 //第三关
     57 int isFullStack_seq(PseqStack L)
     58 {
     59     //判断顺序栈是否已满,若已满,返回值为1,否则返回值为0
     60     if(L->top==L->MAXNUM){
     61         return 1;
     62     }
     63     return 0;
     64 }
     65 
     66 
     67 //第四关
     68 int push_seq(PseqStack L ,DataType x)
     69 {//在顺序栈中插入数据元素x,若插入不成功,返回0;插入成功返回值为1
     70     if(L==NULL||isFullStack_seq(L)){
     71         return 0;
     72     }
     73     L->top++;
     74     L->element[L->top]=x;
     75     return 1;
     76 
     77 }
     78 
     79 
     80 
     81 //第五关
     82 DataType pop_seq(PseqStack L)
     83 {//弹栈并返回删除元素,若栈为空,则返回-1
     84     if(L==NULL){
     85         return;
     86     }
     87     if(L->top==0){
     88         return -1;
     89     }else{
     90         int ans=L->element[L->top];
     91         L->element[L->top]=0;
     92         L->top--;
     93         return ans;
     94     }
     95 
     96 }
     97 
     98 //第六关
     99 DataType top_seq(PseqStack L)
    100 {// 取栈顶元素返回,若栈为空,则返回-1
    101     if(L->top==0&&L!=NULL){
    102         return -1;
    103     }
    104     if(L!=NULL){
    105         return L->element[L->top];
    106     }
    107 }
    108 
    109 //销毁顺序栈,释放栈所占存储空间
    110 int destroystack_seq(PseqStack L)
    111 {
    112     //返回值为销毁的栈中现有数据元素的个数,若待销毁的线性表不存在,则返回0
    113     if(L==NULL){
    114         return 0;
    115     }
    116     int cnt=0;
    117     while(L->top!=0){
    118         cnt++;
    119         L->top--;
    120     }
    121 }
    122 void convert(int data , int k)
    123 {
    124 //利用栈实现将data转换为k进制,k可能是2,8,16. 在本函数内实现转换并调用print函数输出转换后的结果
    125 //十六进制时输出 A ,B ,C, D,E,F 使用大写字母
    126     PseqStack L= createNullStack_seq(1000);
    127     if(k==2){
    128         while(data){
    129             push_seq(L,data%2);
    130             data/=2;
    131         }
    132         while(L->top!=0){
    133             printf("%d",pop_seq(L));
    134         }
    135 
    136     }
    137     if(k==8){
    138         while(data){
    139             push_seq(L,data%8);
    140             data/=8;
    141         }
    142         while(L->top!=0){
    143             printf("%d",pop_seq(L));
    144         }
    145 
    146     }
    147     if(k==16){
    148         char Hex[20]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    149         while(data){
    150             push_seq(L,data%16);
    151             data/=16;
    152         }
    153         while(L->top!=0){
    154             printf("%c", Hex[pop_seq(L)]);
    155 
    156         }
    157 
    158     }
    159 }
    View Code

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/jeseesmith/p/13797046.html
Copyright © 2011-2022 走看看