链接表指针不进行强制转换错误
问题描述:
我得到赋值时将整数指针,未上线46和53,这两条线两边有两个星号铸造错误,我用我的生命,我想不出为什么。链接列表对我来说是非常新的,我不知道它们是如何完全工作的。链接表指针不进行强制转换错误
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct node_def
{
int data;
struct node_def *next;
};
typedef struct node_def node;
node *makeNode (int a);
node *insertFront(node *head,node *new);
void printList(node *head);
int numNodes = 0;
int main()
{
srand(time(0));
int r = rand() % 10000;
int i = 0;
node *head = NULL;
node *tmp = NULL;
printf("How many nodes? ", numNodes);
scanf("%d", numNodes);
printf("\n");
head = insertFront(head, tmp);
for(i = 0; i < numNodes; i++)
{
makeNode(r);
printList(head);
}
printf("\n");
return 0;
}
node *makeNode (int a)
{
node *new = malloc(sizeof(node));
**new = a;**
return new;
}
node *insertFront(node *head, node *new)
{
**new->data = head;**
new->next = new;
return 0;
}
void printList(node *head)
{
int j = 0;
for(j = 0; j < numNodes; ++j)
{
while (head != NULL)
{
printf(" %4d", head->data);
head = head->next;
}
if(j % 10 == 0)
printf("\n");
}
return;
}
新=一个是为了使新的节点,并从0为它们分配一个随机数 - 9999
答
你尝试分配R键新,但新是一个结构。 你让一个指针结构:节点*新 你想要做什么是新 - 分配R>数据,这是一个int。
node *insertFront(node *head, node *new)
{
**new->data = head;** // ** is meaningless
new->next = new; // new is a reserved key word, don't use it this way
return 0;
}
你试图做的是把一个NULL指针作为你的列表头。 只需按下元素进去你makeNode函数中。 插入这样的:
void createNode(node *head)
{
Node *new_node = malloc(sizeof(Node*));
new_node->data = rand() % 100000;
new_node->next = NULL;
if(head == NULL)
head = new_node;
else if(head != NULL)
//Here you have to adapt your list, search (linked list crud functions)
}
你有什么指针是一个糟糕的理解。 希望它可以帮助兄弟
提示:什么类型是'了'?它是一个指针吗?同样,“头”是什么类型?它是一个'int'吗? –
无论这些评论帮助我的,我已经试过所有我能想到的,使这两条线停止给我的错误,从星号和&符号的对方,各种连击开关变量的地方,没有什么工作。我需要更多的指导。 – Boo92
'新=一个;' - >'如果(新){新建 - >数据= A; new-> next = NULL; }' – BLUEPIXY