{
out_seqqueue(Q,&x); printf(\}
destory_seqqueue(&Q); return 1;
} //小数部分的转化
void change(Pseqstack S,Pseqqueue Q) { int z,r; float c,x;
printf(\请输入需要转换的数:\scanf(\printf(\进制是:\scanf(\z=int(x); c=x-int(x);
printf(\转换后的结果是:\conversion(S,z,r); printf(\translate(Q,c,r); }//链接栈、队列 int main() {
//float X; //int R; Pseqstack S;
//S=(Pseqstack)malloc(sizeof(seqstack)); Pseqqueue Q;
//Q=(Pseqqueue)malloc(sizeof(seqqueue));
change(S,Q); return 0; }
2链式结构:
#include
datatype data; struct node *next;
}StackNode,*PStackNode; typedef struct {
PStackNode top; }LinkStack,*PLinkStack; typedef struct Node {
datatype data; struct Node *next;
} Qnode, *PQNode;/*链队结点的类型*/ typedef struct {
PQNode front , rear;
}LinkQueue, *PLinkQueue; /*将头尾指针封装在一起的链队*/
PLinkStack Creat1()
{ /*初始化链栈,入口参数:空,返回值:链栈指针,NULL表示初始化失败*/ PLinkStack S;
S=(PLinkStack)malloc(sizeof(LinkStack)); if(S)
S->top ==NULL; return S; }
int Empty(PLinkStack S)
{ /*判断链栈是否为空,入口参数:链栈指针*/ return (S->top ==NULL); }
void Push(PLinkStack S,datatype x) { /*进栈,入口参数:链栈指针*/ PStackNode P;
P=(PStackNode)malloc(sizeof(StackNode)); if(!P)
printf(\内存溢出!\\n\else {
P->data =x;
P->next =S->top ; S->top =P; } }
void Pop(PLinkStack S ,datatype *x) { /*出栈,*x保存被删除的元素值*/ PStackNode P; if(Empty(S))
printf(\栈空不能出栈!\\n\else {
*x=S->top->data; P=S->top ;
S->top =S->top->next ; free(P); } }
void Convert1(PLinkStack S,int n,int r)
{ /*转化,入口参数:链栈指针,数n,进制r*/ int x;
S=Creat1(); while(n) {
Push(S,n%r); n/=r; }
while(!Empty(S)) {
Pop(S,&x); printf(\ } }
PLinkQueue Creat2()
{ /*初始化一新队列,入口参数:无,返回值:新链队列指针,NULL表示失败*/
PLinkQueue Q;
Q=(PLinkQueue)malloc(sizeof(LinkQueue)); /*申请链队结点*/ if (Q) {
Q->front=NULL; Q->rear=NULL; } return Q; }
int Empty_LinkQueue(PLinkQueue Q) {
if(Q&&Q->front ==NULL&&Q->rear ==NULL) return 1; else return 0; }
void In_LinkQueue (PLinkQueue Q, datatype x)
{ /*入队操作,入口参数:链队列和待入队元素x ,返回值:1表示成功,0表示系统内存溢出*/ PQNode p;
p=(PQNode)malloc(sizeof(Qnode)); if(!p) {
printf(\内存溢出!\\n\return ; }
p->data=x; p->next=NULL;
if (Empty_LinkQueue(Q)) Q->front = Q->rear = p; else
{
Q->rear ->next=p; Q->rear = p; } /*入队完成*/ }
void Out_LinkQueue (PLinkQueue Q , datatype *x)
{ /*出队操作,入口参数:链队列,返回值:1表示成功,0表示队空*/ PQNode p;
if (Empty_LinkQueue(Q)) {
printf(\队空不能出队!\\n\ /*队空不能出队*/ return ; } else {
*x=Q->front->data; p=Q->front;
Q->front=Q->front->next; free(p); if(!Q->front)
Q->rear=NULL; } /*出队完成*/ }
void Convert2(PLinkQueue Q,float n,int r) { int x;
Q=Creat2(); while (n) {
In_LinkQueue(Q,n*r); n=n*r-int(n*r); }
while (!Empty_LinkQueue(Q))
{ //依次从队列中弹出每一个余数,并输出之 Out_LinkQueue(Q,&x); printf(\} }
void Change(PLinkStack S,PLinkQueue Q) {
int r,X; float n,Y;
printf(\请输入要转化的数:\scanf(\