我想实现一个链接列表的堆栈。我遇到了pop()
函数的问题。它编译好,但是当我尝试运行代码时,它在tmp=tmp->head;
上崩溃,我不知道为什么。我试过谷歌,但没有找到答案。这里是完整的代码:Pop()函数崩溃
struct node{ //kreiram stog
struct node* head;
struct node* next;
int broj;
}node;
void push_onto(int broj){ // dodajem na glavu
struct node* novi;
novi=(struct node*)malloc(sizeof(struct node));
//novi=novi->head;
if (novi== NULL)
printf("Smth is wrong,Jose!\n");
else
novi->broj=broj;
novi->next=novi->head;
novi->head=novi;
}
int pop()// skidam sa stoga
{
struct node* temp;
temp=temp->head;
int br;
if (temp->next==NULL)
return -1;
else
br=temp->head;
temp=temp->next;
free(temp);
return br;
}
void top(){ //koji je element na stogu
struct node* tmp;
printf("Trenutni element na stogu je %d",tmp->broj);
}
void is_empty(){
struct node* tmp;
tmp=tmp->head;
if (tmp->head ==NULL)
printf("List is empty!\n");
}
void print_elem(){
struct node* tmp;
tmp=tmp->head;
if (tmp->head==NULL)
printf("Smth gone wrong!\n");
while (tmp!=NULL)
{
printf("Number is: %d",tmp->broj);
tmp=tmp->next;
}
printf("\n");
}
int main(void){
push_onto(15);
push_onto(10);
push_onto(20);
push_onto(12);
//print_elem();
printf("The element removed is : %d",pop());
//print_elem();
return 0;
}
这不是我的家庭作业,虽然它看起来像这样。这只是我试图找出一些基本算法的尝试。 在此先感谢! :)
非常感谢!正如你所说我正在接近它,这只是一些事情,但仍然bug我。我是那些必须“看到它”才能完全理解它的人之一,但是对于编程而言,这听起来很奇怪。 :)) 不管怎样,谢谢! – Nebbs 2013-04-27 03:28:13
大声笑,相信它,我们必须“看到它”。我开始在BASIC中编程,并且我记得我已经直观地应用了指针和间接的概念,通过使用一个本身包含索引的数组到第二个数组。当我被介绍给帕斯卡尔的指针时,我花了一段时间才弄清楚这个事实!保持。很高兴我能够帮助! – 2013-04-27 16:13:31