关于链表创建的一个疑问
如下代码,我的思路是init函数创建一个节点和一个指向节点的指针(堆上分配),然后返回这个指针作为头指针,add2tail就是向链表的尾部添加一个节点,但是为什么没有正确运行
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct node{
int data;
struct node * next;
};
struct node * init(int data){
struct node * head = (struct node *)malloc(sizeof(struct node *));
struct node * n = (struct node * )malloc(sizeof(struct node));
n->data = data;
n->next = NULL;
head = n;
return head;
}
void add2tail(struct node * list, int data){
struct node * n = list;
while (n != NULL){
n = n->next;
}
struct node * newnode = (struct node * )malloc(sizeof(struct node));
n = newnode;
newnode->data = data;
newnode->next = NULL;
return;
}
void print(struct node * list){
struct node * n = list;
while (n != NULL){
printf("%d ", n->data);
n = n->next;
}
printf("\n");
return;
}
int main(void){
struct node * head = init(123);
print(head);
add2tail(head, 7);
print(head);
system("pause");
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)