11.28 尾插法创建单链表

发布于 2024-11-28  111 次阅读


#include <stdio.h>
#include <stdlib.h>

typedef struct node{
  int data;
  struct node *next;
}node;

node* create(int data){
  //专门建立一个函数来实现传入数据的操作,这在每一次insert函数用到,更简洁
  node* newnode=malloc(sizeof(node));
  newnode->data=data;
  newnode->next=NULL;
  return newnode;
}

void insert(node** head,int data){
   node* newnode=create(data);//这一行使用到了creat,即新节点的创建函数
   if(*head==NULL){
   *head=newnode;//如果你传入的头节点为空,说明是第一次初始化,让新节点成为头节点
   //只有在第一次主函数调用insert时才会修改head的内容
}else{
    node*temp=*head;//临时指针指向头指针,这个temp的作用是找到最后的节点
    while(temp->next!=NULL){
        temp=temp->next;
    }
    temp->next=newnode;//让传入的数据成为最后的节点
}
}

void show(node* head){
   node* temp=head;//上面是node指针类型,因为head是指针类型,而且我们想要打印出来的应该是存入的数据,而不是指针自己的本体地址
   while(1){
    printf("%d",temp->data);
    if(temp->next==NULL){
    break;
   }
    temp=temp->next;
   }
}

int main(){
   int a,b,c;
   scanf("%d %d %d",&a,&b,&c);
   node* head=NULL;
   insert(&head,a);//取head本体的地址,而不是NULL的地址,所以要加取地址运算符
   insert(&head,b);
   insert(&head,c);
   show(head);
  return 0;
}

确实蛮长的啊,先熟练掌握,后续再学头插法

届ける言葉を今は育ててる
最后更新于 2024-11-28