#include<stdio.h>
#include<stdlib.h>
//類型創(chuàng)建
typedef struct LinkedStackNode
{
int data;
struct LinkedStackNode* next;
}LinkedStackNode, * LinkedStack;
LinkedStack top;
//鏈棧的初始化
//頭結(jié)點(diǎn)的初始化
LinkedStack Init_LinkedStack()
{
LinkedStack top = (LinkedStackNode*)malloc(sizeof(LinkedStackNode));
if (top != NULL)
{
top->next = NULL;
}
else
{
printf("頭結(jié)點(diǎn)申請(qǐng)空間失敗\n");
}
return top;
}
//判斷棧空
int LinkedStack_Empty(LinkedStack top)
{
if (top->next == NULL)
{
return 1;
}
else
{
return 0;
}
}
//入棧
int Push_LinkedStack(LinkedStack top, int x)
{
LinkedStackNode* node;
node = (LinkedStackNode*)malloc(sizeof(LinkedStackNode));
if (node == NULL)
{
printf("節(jié)點(diǎn)申請(qǐng)空間失敗\n");
return 0;
}
node->data = x;
node->next = top->next;
top->next = node;
return 1;
}
//出棧
int Pop_LinkedStack(LinkedStack top, int* x)
{
LinkedStackNode* node;
if (top->next == NULL)
{
printf("鏈棧為空,無法進(jìn)行出棧操作\n");
return 0;
}
else
{
node = top->next;
*x = node->data;
top->next = node->next; //將頭結(jié)點(diǎn)后的節(jié)點(diǎn)整體向前一位
free(node);
return 1;
}
}
//讀取棧頂元素
int Get_LinkedStack(LinkedStack top, int* x)
{
if (top->next == NULL)
{
printf("鏈棧為空\n");
return 0;
}
else
{
*x = top->next->data;
return 1;
}
}
//對(duì)于輸入的任意一個(gè)非負(fù)十進(jìn)制整數(shù),打印輸出與其等值的任意進(jìn)制數(shù)
void Conversion(int N)
{
int x; //聲明變量x,輸出轉(zhuǎn)換后各個(gè)位數(shù)上的數(shù)
int jinzhi;
printf("請(qǐng)輸入需要轉(zhuǎn)換為的進(jìn)制數(shù)\n");
scanf("%d",&jinzhi);
LinkedStack S = Init_LinkedStack(); //構(gòu)造空鏈棧S
while (N > 0) //當(dāng)N>0時(shí),繼續(xù)進(jìn)行數(shù)值轉(zhuǎn)換
{
Push_LinkedStack(S,N%jinzhi); //對(duì)N對(duì)進(jìn)制數(shù)的余數(shù)的入棧
N /=jinzhi; //將N的商賦值給本身,便于下一輪計(jì)算
}
printf("轉(zhuǎn)化后的進(jìn)制數(shù)為:");
while (!LinkedStack_Empty(S)) //棧不為空時(shí),出棧棧中的余數(shù)
{
Pop_LinkedStack(S,&x); //進(jìn)行出棧操作
printf("%d ",x);
}
}
int main()
{
//棧的初始化
//頭結(jié)點(diǎn)的初始化
LinkedStack top;
top = Init_LinkedStack();
if (top == NULL)
{
printf("申請(qǐng)鏈??臻g失敗\n");
}
//對(duì)于輸入的任意一個(gè)非負(fù)十進(jìn)制整數(shù),打印輸出與其等值的任意進(jìn)制數(shù)
int N;
printf("請(qǐng)輸入需要轉(zhuǎn)換的非負(fù)十進(jìn)制數(shù)\n");
scanf("%d",&N);
Conversion(N);
return 0;
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-720534.html
文章來源:http://www.zghlxwxcb.cn/news/detail-720534.html
到了這里,關(guān)于(數(shù)據(jù)結(jié)構(gòu))數(shù)制轉(zhuǎn)換——將一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換成一個(gè)非十進(jìn)制數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!