栈操作和进制转换

栈操作及数进制转换的实现(将十进制转换成二进制)只考虑整数
栈的基本操作包括:初始化栈、入栈、出栈、判定栈空、判定栈满、取栈顶元素等;
从数制转换示例可以看出,十进制数转换成相应二进制数可使用栈存放,再依次弹出栈顶元素输出,即可得到相应二进制结果。

栈的结构设置:

typedef int DataType;//采用链式栈 
struct node{   
DataType element;  //数据元素    
struct node *next; //指向下一个数据元素的指针 };
typedef struct node *PtrToNode;typedef struct node * Stack; 

初始化栈(即创建空栈):

Stack createStack(void)  {   
Stack head=new struct node;    
if(head==NULL) return NULL;   
 head->next=NULL;   
 }

入栈操作:

void push(DataType  x,Stack s) {    //表头作为栈顶,此处请填写代码实现压栈功能      Stack temp=new struct node;    
 temp->element=x;   
  if(s==NULL)  s->next=temp;    
  else{    temp->next=s->next;    s->next=temp;  
    }

出栈操作:

DataType pop(Stack s) {   //此处请填写代码实现出栈并返回栈顶元素的功能,若栈为空,则返回-1
 Stack temp=s->next;    
 if(isEmpty(temp)==1)  return -1;    
 s->next=temp->next;    free(temp); 
   }

判断栈空:若栈为空,则返回1,否则返回0

 int isEmpty(Stack s) {    
   if(s==NULL)  return 1;    
   else return 0;        
   }
   
  十进制转二进制操作:
  void convert10to2(int x)
{
 //实现将参数x转换为二进制并输出的功能,使用上述栈的基本操作实现
 Stack head=new struct node;
 head=createStack();
 while(x!=0){
  push(x%2,head);
  x=x/2;
 }
 while(isEmpty(head->next)==0){
  cout<<head->next->element;
      pop(head);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值