gpt4 book ai didi

c - 在 C 中使用 typedef 和指针来实现堆栈

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

我在编译这段代码时遇到问题,因为我不知道如何使用 typedef (但我们必须这样做)。我的方法 Push 将 item *elem 作为输入,但 top -> info = *elem 不起作用。这是我的代码:

#include <stdio.h>
#include <stdlib.h>



struct node
{
int info;

struct node *ptr;
}*top,*top1,*temp;


typedef struct item {

} item;

// my methods
void push(item *elem);
void *pop();
void empty();
void create();

int count = 0;

void create()
{
top = NULL;
}


// pushing the elements in the stack
void push(item *elem)
{
if (top == NULL)
{
top =(struct node *)malloc(1*sizeof(struct node));
top->ptr = NULL;
top->info = *elem;
}
else
{
temp =(struct node *)malloc(1*sizeof(struct node));
temp->ptr = top;
temp->info = *elem; // here is the error "not compatible"
top = temp;
}
count++;
}
// I also got this, this is for creating a new elem, but I do not
// know how to implement this method
item* new_item(int value) {

}

最佳答案

首先,typedef:

struct node  
{
int info;
struct node *ptr;
};
typedef struct node item;

并创建一个指针:

item *top = NULL;

push 应该简单地将元素插入堆栈顶部。

void push(item *elem)
{
// I assume elem is already created.
if (top == NULL)
{
top = elem;
}
else
{
top->ptr = elem;
top = elem;
}
count++;
}

new_item 应分配内存并初始化

item* new_item(int value)
{
item *temp = malloc(sizeof(item));
item->info = value;
item->ptr = NULL;
}

在其他地方,创建并添加......

item *someNewItem = new_item(100);
push(someNewItem);
// Later on, someNewItem needs to be free()'d

关于c - 在 C 中使用 typedef 和指针来实现堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787296/

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