1. 栈的进制转换,将十进制转换成二进制。[链栈实现]
思路:循环把余数入栈
循环出栈,直到栈空为址
链式队列的构造:
函数封装:
#include <stdio.h>
#include <stdlib.h>
#include "./03_sequeue.h"
/*
* function: 创建循环队
* @param [ in]
* @param [out]
* @return
*/
sequeue* createsequeuelist(void)
{
sequeue* sq = (sequeue*)malloc(sizeof(sequeue));
if(NULL == sq){
printf("创建循环队列失败\n");
return NULL;
}
sq->front = 0;
sq->rear = 0;
return sq;
}
/*
* function: 判满
* @param [ in]
* @param [out]
* @return
*/
int isFull_sequeue(sequeue* sq)
{
return sq->front == (sq->rear+1)%N ? 1:0;
}
/*
* function: 入队
* @param [ in]
* @param [out]
* @return
*/
void insert_sequeue(sequeue* sq,datatype num)
{
if(isFull_sequeue(sq)){
printf("队列为满,插入失败\n");
return;
}
sq->data[sq->rear] = num;
sq->rear = (sq->rear+1)%N;
return;
}
/*
* function: 判空
* @param [ in]
* @param [out]
* @return
*/
int isEmpty_sequeue(sequeue* sq)
{
return sq->front == sq->rear ? 1:0;
}
/*
* function: 出队
* @param [ in]
* @param [out]
* @return
*/
datatype output_sequeue(sequeue* sq)
{
if(isEmpty_sequeue(sq)){
printf("队列为空,出对失败\n");
return (datatype)-1;
}
datatype num = sq->data[sq->front];
sq->front = (sq->front+1)%N;
return num;
}
/*
* function: 遍历
* @param [ in]
* @param [out]
* @return
*/
void show_sequeue(sequeue* sq)
{
int i = 0;
for(i=sq->front;i != sq->rear;i=(i+1)%N ){
printf("%d",sq->data[i]);
}
putchar(10);
}
/*
* function: 计算长度
* @param [ in]
* @param [out]
* @return
*/
int countNUm_sequeue(sequeue* sq)
{
return (sq->rear - sq->front+N)%N;
}
/*
* function:
* @param [ in]
* @param [out]
* @return
*/
函数声明:
#ifndef __SEQUEUE__
#define __SEQUEUE__
#define N 7
typedef int datatype;
typedef struct node{
datatype data[N];
int front;
int rear;
}sequeue;
sequeue* createsequeuelist(void);
void insert_sequeue(sequeue* sq,datatype num);
datatype output_sequeue(sequeue* sq);
void show_sequeue(sequeue* sq);
int countNUm_sequeue(sequeue* sq);
#endif
主函数:
调用封装函数即可实现,注意包头文件(函数声明文件)