首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言模拟栈是失误

2014-01-12 
C语言模拟栈是出错。做了一个C语言模拟栈的程序,出现了一个错误,如下图,可能是指针指向了一个未知空间的错

C语言模拟栈是出错。
C语言模拟栈是失误做了一个C语言模拟栈的程序,出现了一个错误,如下图,可能是指针指向了一个未知空间的错误。但不知道怎么错的。


代码:

# include <stdio.h>
# include <malloc.h>
typedef struct Node{
int date;
struct Node * next;
}Node ,*PNode;
typedef struct Stack{
PNode pHead;
PNode pTail;
} Stack;
void init(Stack * pS){
PNode n=(PNode)malloc(sizeof(Node));
pS->pHead=n;
pS->pTail=n;
n->next=NULL;
}
void push(Stack * pS,int val){
PNode p=(PNode)malloc(sizeof(PNode));
p->date=val;
p->next=pS->pHead;
pS->pHead=p;
}
void travel(Stack * pS){
PNode p=pS->pHead;
while(p!=NULL){
 printf("%d ",p->date);
 p=p->next;

}
}
int main(void){
 Stack s;
 push(&s,1);
 travel(&s); 
push(&s,1);
 travel(&s); 
return 0;
}
应该是travel中出现错误,我知道怎么改,但是不知道哪里出错了?
[解决办法]
听到模拟栈,我第一个想到LZ是大神,要自建虚拟机,结果原来是小白,在练习数据结构~


void push(Stack * pS,int val){ //你这个push写的狗屁不通,不作评论~
//PNode p=(PNode)malloc(sizeof(PNode));
PNode p=(PNode)malloc(sizeof(Node));
p->date=val;
//p->next=pS->pHead;
p->next = NULL;
//pS->pHead=p;
pS->pTail->next = p;
pS->pTail = p;
}

void travel(Stack * pS){
//PNode p=pS->pHead;
PNode p=pS->pHead->next; //你既然带了头节点,那么这个头节点是没有数据的,遍历时自然要跳过
while(p!=NULL){
 printf("%d ",p->date);
 p=p->next;
}
}

还有题外话,data才是数据的英文,你那个date是日期。还有你没写内存释放的函数,会有内存泄漏

热点排行