第2个回答 2012-04-08
#include <stdio.h>
#include <malloc.h>
//栈的相关定义
/////////////////////////////////////////////////////////////////////////////
typedef struct Node
{
char a;
Node *next;
} *pNode;
typedef struct MStack
{
pNode pBase;
pNode pTop;
int size;
} MStack;
MStack one;
void InitStack(MStack &aStack)
{
aStack.pBase=aStack.pTop=NULL;
aStack.size=0;
}
void PushStack(MStack &aStack,char ch)
{
if(aStack.size==0)
{
aStack.pBase=aStack.pTop=(pNode)malloc(sizeof(Node));
aStack.pBase->a=ch;
aStack.pBase->next=NULL;
aStack.size++;
}
else
{
pNode pt=(pNode)malloc(sizeof(Node));
pt->a=ch;
pt->next=aStack.pTop;
aStack.pTop=pt;
aStack.size++;
}
}
void ClearStack(MStack &aStack)
{
while(aStack.pTop!=NULL)
{
pNode pTemp=aStack.pTop;
aStack.pTop=aStack.pTop->next;
pTemp->next=NULL;
free(pTemp);
}
InitStack(aStack);
}
/////////////////////////////////////////////////////////////////////////////
int main()
{
MStack mystack;
InitStack(mystack);
int a=123456;
while(a)
{
char s;
s=a%10+48;
PushStack(mystack,s);
a/=10;
}
pNode temp=mystack.pTop;
while(temp!=NULL)
{
printf("%c",temp->a);
temp=temp->next;
}
char str[20];
int i=0;
temp=mystack.pTop;
while(temp!=NULL)
{
str[i]=temp->a;
i++;
temp=temp->next;
}
str[i] = '\0';
printf("after change:%s",str);
ClearStack(mystack);
return 0;
}
第3个回答 2012-04-06
别用itoa,不是标准c里面的,用sprintf吧,占位符用%l,%d是整型。
#include<stdio.h>
int main()
{
char temp[20];
long l=11111111;
sprintf(temp,"%l",a);
return 0;
}