c-无法在链接列表中插入



我试图在给定的链表中插入一个元素,但当我想打印它时,它会显示无限循环。在insert()调用中,我传递指针的地址,而在display中,我只传递指针中存储的地址。帮我plz

#include<stdio.h>
struct node{
int item;
node *ptr;
};
int insert(node **head, int data, int position)
{ 
int count=1;
node *temp=malloc(sizeof(struct node));
temp->item=data;
temp->ptr=NULL;
node *p,*q;
p=*head;
if(*head==NULL)
{
    *head=temp;
}
if(position==1)
{
    temp->item=*head;
    *head=temp;
}
else{
while(p!=NULL&&count<position)
{
    count++;
    q=p;
    p=p->ptr;
}
q->ptr=temp;
temp->ptr=p;
}
}
void display(node *temp)
{
while(temp!=NULL)
{
    printf("the data is %d",temp->item);
    temp=temp->ptr;
}
}
void main()
{
node *head=malloc(sizeof(struct node));
insert(&head,29,1);
display(head);
}
  1. 这是一个C程序,请正确分类
  2. 在代码中不使用任何C++模块

使用C实现-

我认为在链表的简单插入中不需要双指针。你可以做的是-

void insert(node *head, int data){
   node *temp= malloc(sizeof(struct node));
   temp->item = data;
   temp->ptr= NULL;
   if(head==NULL){  //empty list
       head=temp;
   }
   else {
     while(head->ptr!=NULL){ //traverse till end
       head=head->ptr;
     }
     head->ptr=temp;
   }
 }

并从主函数调用作为insert(头,值);

相关内容

  • 没有找到相关文章

最新更新