69,381
社区成员
发帖
与我相关
我的任务
分享
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
typedef struct Node
{
int value;
struct Node * next;
}NODE , *PNODE;
typedef struct Stack
{
PNODE top;
PNODE bottom;
}STACK,*PSTACK;
void init(PSTACK);
void push(PSTACK , int);
bool pop(PSTACK , int *);
void traversal(PSTACK ps);
bool Empty(PSTACK);
int main()
{
int * value;
STACK s;
push(&s , 1);
push(&s , 2);
traversal(&s);
pop(&s , value); // 可能是这错了
traversal(&s);
return 0;
}
void init(PSTACK ps)
{
ps->top = (PNODE)malloc(sizeof(NODE));
if(ps->top == NULL)
{
printf("内存分配失败");
exit(-1);
}
else
{
ps->bottom = ps->top;
ps->top->next = NULL;
}
return;
}
bool Empty(PSTACK ps)
{
if(ps->top == ps->bottom)
{
return true;
}
else
{
return false;
}
}
void push(PSTACK ps , int value)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(pNew == NULL)
{
printf("内存分配失败");
return;
}
pNew->value = value;
pNew->next = ps->top;
ps->top = pNew; // top 指向 new
return;
}
bool pop(PSTACK ps, int *value)
{
if(Empty(ps))
{
exit(-1);
}
PNODE p = ps->top;
*value = p->value;
ps->top = ps->top->next;
free(p);
p = NULL;
return true;
}
void traversal(PSTACK ps)
{
PNODE p = ps->top;
while(p != ps->bottom)
{
printf("%d " , p->value);
p = p->next;
}
printf("\n");
return ;
}
int value = 0; //改成这样吧!定义int型
pop(&s , &value); // 这样value的地址
[/quote]
还是不对, 只能value是指针 *value = &(p->value); 再把p->value转成地址 [/quote]
int *value = new int;//这样吧!
int value = 0; //改成这样吧!定义int型
pop(&s , &value); // 这样value的地址
[/quote]
还是不对, 只能value是指针 *value = &(p->value); 再把p->value转成地址
int value = 0; //改成这样吧!定义int型
pop(&s , &value); // 这样value的地址