void linkstack_change(datatype num)
{
LinkStack* sa=linkstack_create();
datatype sun=num;
int res;
while(num !=0)
{
res=num%2;
num=num/2;
linkstack_push(sa,res);
}
while(sa->data.len !=0)
{
datatype res=linkstack_pop(sa);
printf("%d\t",res);
}
putchar(10);
return;
}
/*
* function: 创建空的链式队列
* @param [ in]
* @param [out]
* @return
*/
Gather* linksequeue_create()
{
Gather* q=(Gather*)malloc(sizeof(Gather));
if(NULL == q)
{
printf("堆空间申请失败\n");
return NULL;
}
q->head=(Linksequeue*)malloc(sizeof(Linksequeue));
if(NULL == q->head)
{
printf("创建空的链式队列失败\n");
return NULL;
}
q->head->data.len=0;
q->head->next=NULL;
q->rear = q->head;
return q;
}
/*
* function: 创建新的节点
* @param [ in]
* @param [out]
* @return
*/
Linksequeue* linksequeue_createnew(datatype num)
{
Linksequeue* new=(Linksequeue*)malloc(sizeof(Linksequeue));
if(NULL == new)
{
printf("创建失败\n");
return NULL;
}
new->data.text=num;
new->next=NULL;
return new;
}
/*
* function: 判空
* @param [ in]
* @param [out]
* @return
*/
int linksequeue_isEmpty(Gather* q)
{
return q->head == q->rear ? 1:0;
}
/*
* function: 入队
* @param [ in]
* @param [out]
* @return
*/
void linksequeue_insert(Gather* q,datatype num)
{
Linksequeue* temp=linksequeue_createnew(num);
temp->next=q->rear->next;
q->rear->next=temp;
q->rear=q->rear->next;
q->head->data.len++;
return;
}
/*
* function: 遍历
* @param [ in]
* @param [out]
* @return
*/
void linksequeue_show(Gather* q)
{
Linksequeue* p=q->head;
while(NULL !=p->next)
{
p=p->next;
printf("%d\t",p->data.text);
}
printf("\n");
return;
}
/*
* function: 出栈
* @param [ in]
* @param [out]
* @return
*/
datatype linksequeue_pop(Gather* q)
{
if(linksequeue_isEmpty(q))
{
printf("栈为空,删除失败\n");
return (datatype)-1;
}
Linksequeue* temp =q->head->next;
if(temp == q->rear)
{
q->rear = q->head;
}
q->head->next=temp->next;
datatype num =temp->data.text;
free(temp);
temp=NULL;
q->head->data.len--;
return num;
}