#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef int datatype;
typedef struct node
{
datatype data; //数据域
struct node* next;//指针域
}ND, * PND;
typedef struct linkstack
{
PND ptop; //栈顶指针
PND pbot; //栈底指针
}ST, * PLST;
PLST initstack()
{
//申请管理结构体
PLST pst = (PLST)malloc(sizeof(ST));
if (pst == NULL)
return pst;
//申请链表
PND phread = (PND)malloc(sizeof(ND));
if (phread == NULL)
{
printf("malloc phread fail\n");
free(pst);
return NULL;
}
phread->next = NULL;
pst->ptop = phread;
pst->pbot = phread;
return pst;
}
void push(PLST pst, datatype d)
{
PND pnew = (PND)malloc(sizeof(ND));
if (pnew == NULL)
return;
if (d > 10)
{
d = d - 10 + 'A';
pnew->data = d;
pnew->next = NULL;
}
else
{
pnew->data = d;
pnew->next = NULL;
}
pst->ptop->next = pnew;
pst->ptop = pnew;
}
bool is_empty(PLST pst)
{
if (pst->pbot == pst->ptop)
return true;
else
return false;
}
void pop(PLST pst, datatype* val)
{
if (is_empty(pst))
{
printf("the link stack is empty\n");
return;
}
PND ptamp = pst->pbot; //定义一个PND类型的结构指针用于找到ptop节点,只有结构指针可以操作结构内的数据
while (ptamp->next != pst->ptop)
ptamp = ptamp->next;
*val = pst->ptop->data; //存放当前即将出栈的数据
PND q = pst->ptop; //定义一个临时指针用于存放现在的ptop,最后将它清理掉
pst->ptop = ptamp;
pst->ptop->next = NULL;
free(q);
}
void dec_to_oct(PLST pst,datatype cover,datatype base)
{
while (cover > 0)
{
push(pst, cover % base);
cover = cover / base;
}
datatype val;
if (base >= 10)
printf("0x");
else
printf("0");
while (1)
{
if (is_empty(pst))
break;
pop(pst, &val);
if (val >= 10)
printf("%c", val);
else
printf("%d", val);
}
printf("\n");
}
int main()
{
datatype cover, base;
char clsn;
PLST pst = initstack();
printf("please enter the cover( <0 to quit): ");
while (scanf_s("%d",&cover)&&(cover < 0))
{
printf("please enter the base: ");
scanf_s("%d", &base);
dec_to_oct(pst, cover, base);
printf("\n\nWhether to clear the screen(y/anyother): ");
scanf_s("%c", &clsn, 2);
printf("please enter the cover again( <0 to quit): ");
}
system('cls');
}
如代码最后,加了一个system('cls');这行代码。
但是出现以下警告,怎么解决呀
严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C4024 “system”: 形参和实参 1 的类型不同
警告 C4047 “函数”:“const char *”与“int”的间接级别不同