#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;
}
确实蛮长的啊,先熟练掌握,后续再学头插法
Comments NOTHING