C语言 简单链表



我有以下单个链表,我总是得到长度为1,即使我推3个元素,并且总是只创建一个节点。请help.Thanks。

#include <stdio.h>
struct node
{
    int data;
    struct node *next;
};
void push(struct node **head,int data)
{
    struct node *temp = (struct node*)malloc(sizeof(struct node));
    temp->data=data;
    if(*head == NULL)
    {
        *head=temp;
    }
    else
    {
    temp->next=*head;
    *head=temp;
    }
}
int length(struct node *head)
{
    struct node *temp = head;
    int count=0;
    if(temp !=NULL)
    {
        count++;
        printf("%d",temp->data);
        temp=temp->next;
    }
    return count;
}
int main()
{
    int a;
    struct node *head=NULL;
    push(&head,1);
    push(&head,2);
    push(&head,3);
    a=length(head);
    printf("%d",a);
    return 0;
}

在长度函数中用while代替if

length函数中,更改这一行:

if(temp !=NULL)

:

while(temp != NULL) 

你注意到长度方法的结构了吗?您正在使用if语句,其中循环将是合适的。你得到的答案是1,因为你只执行了一次count ++语句。

错误来自push()函数。如果head不为空,则需要通过列表迭代到最后一个节点。如前所述while而不是if

# include <stdlib.h>
void push(struct node **head,int data)
{
struct node *temp;
temp = malloc (sizeof *temp);
temp->data = data;
temp->next = *head;
*head = temp;
} 

相关内容

  • 没有找到相关文章

最新更新