所以我只是想知道这个推送功能是否正确,将一个新值推送到顶部的链表是否正确
void push(node** hd, int v){
node temp;
temp = (node*)malloc(sizeof(node));
temp -> val = v;
temp -> next = *hd;
*hd = temp;
}
提前致谢!
另外,我想知道如何制作一个pop函数,将最近推出的值从堆栈中弹出。
结构代码顺便说一下......
typedef struct nodeStruct
{
int val;
struct nodeStruct* next;
}node;
typedef node* list;
答案 0 :(得分:2)
不要定义指针类型。他们很困惑。定义普通类型并明确取消引用它。这是你在没有指针类型的情况下尝试做的事情。
#include <stdlib.h>
#include <stdio.h>
typedef struct nodeStruct
{
int val;
struct nodeStruct *next;
} node;
static void push(node **head, int v)
{
node *temp = malloc(sizeof(node));
temp->val = v;
temp->next = *head;
*head = temp;
}
int main(int argc, char **argv)
{
(void) argv;
(void) argc;
node *list = NULL;
for (int i=0; i<10; ++i) {
push(&list, i);
}
for(node *l = list; l != NULL; l = l->next) {
printf("%d ", l->val);
}
printf("\n");
return 0;
}
请注意,您应该检查malloc
是否失败。换句话说,malloc
可以返回NULL,应该处理它 - 留给你。