gpt4 book ai didi

c - 程序在实现链表时查找堆栈中最大的元素,但数据未被访问

转载 作者:行者123 更新时间:2023-11-30 17:17:59 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
//structure//
struct node
{
int data;
struct node *link;
};
//function to push elements into stack//
void push(struct node *top_ref,int x)
{
struct node *new=(struct node *)malloc(sizeof(struct node));
new->data=x;
new->link=top_ref;
top_ref=new;
}
//function to get largest element//
int largest(struct node *top_ref)
{
int temp=0;
while(top_ref!=NULL)
{
if(temp<top_ref->data)
{
temp=top_ref->data;
}
top_ref=top_ref->link;
}
return temp;
}
//function to print the stack//
void print(struct node *top_ref)
{
while(top_ref!=NULL)
{
printf("%d->",top_ref->data);
top_ref=top_ref->link;
}
printf("\n");
}
//main function//
int main()
{
struct node *stack=(struct node *)malloc(sizeof(struct node));
stack=NULL;
push(stack,1);
push(stack,5);
push(stack,6);
push(stack,3);
print(stack);
printf("the largest no. is %d\n",largest(stack));
}

试图找到最大的数字。在堆栈中。第 20、32 行有问题 top_ref->data 未被访问top_ref 是链表的最后一个节点链表和数据结构新手

我得到的输出是

empty line
the largest no. is 0

最佳答案

这里的重点是堆栈是一个指向另一个指针的指针,因此在push函数中应该被视为双指针。

#include<stdio.h>
#include<stdlib.h>
//structure//
struct node
{
int data;
struct node *link;
};
//function to push elements into stack//
void push(struct node **top_ref,int x)
{
struct node * tmp=(struct node *)malloc(sizeof(struct node));
tmp->data=x;
tmp->link=NULL;
if(top_ref==NULL){
*top_ref=tmp;
}
else{
tmp->link= *top_ref;
*top_ref=tmp;
}
}
//function to get largest element//
int largest(struct node *top_ref)
{
int temp=0;
while(top_ref!=NULL)
{
if(temp<top_ref->data)
{
temp=top_ref->data;
}
top_ref=top_ref->link;
}
return temp;
}
//function to print the stack//
void print(struct node *top_ref)
{
while(top_ref!=NULL)
{
printf("%d->",top_ref->data);
top_ref=top_ref->link;
}
printf("\n");
}
//main function//
int main()
{
struct node *stack;
stack=NULL;
//stack=NULL;
push(&stack,1);
push(&stack,5);
push(&stack,6);
push(&stack,3);
print(stack);
printf("the largest no. is %d\n",largest(stack));
}

关于c - 程序在实现链表时查找堆栈中最大的元素,但数据未被访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29329539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com