Linked list creation and insertion

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    int data;
    struct node *p;
}*Node;//申明一个结构体,并申明一指针型结构体变量Node
int main()
{
    Node head,tail;//头指针
    head=(struct node *)malloc(sizeof(struct node));
    head->p=NULL;//此时头节点head的data并没有数据,且其指向为空
    tail=head;//使用尾插法tail指向头节点
    int n;
    scanf("%d",&n);//向链表输入n个数
    int num;
    while(n--)
    {
        scanf("%d",&num);
        Node temp=(Node)malloc(sizeof(struct node));//申明一个临时结构体指针存储输入的数据
        temp->data=num;
        temp->p=tail->p;//临时指针指向tail的NULL,此时temp到了最后的位置
        tail->p=temp;//tail要连接temp,不然的话链表就链接不起来,此时temp结点是tail的后续结点
        tail=temp;//移动tail指针的位置到temp结点,temp是最后结点
    }
    puts("链表已经构造完成!");
    Node traverse;//遍历指针
    traverse=head->p;//head是头节点并没有信息,所有要指向他的下一个结点
    while(traverse!=NULL)//只要指针不指向NULL则一直遍历
    {
        printf("%d%s",traverse->data,traverse->p==NULL ? "\n" : "->");//输出traverse结点的值
        traverse=traverse->p;//输出玩本节点就指向下一个结点
    }
    //此时已经输出完所有结点了
    puts("请输入你要插入的数"); 
    int insert;
    scanf("%d",&insert);
    traverse=head;//继续使用之前申明的指针traverse来完成遍历任务,找到比输入值大的那个结点指针
    while(traverse->p->data<insert && traverse->p!=NULL)//这里不能使用traverse!=NULL,因为要是插入到最后一个位置,那就是地址NULL了,插不进去了
    traverse=traverse->p;
    //此时traverse找到了比插入值大的结点的前一个位置,也可能没有比他大的结点,现在是最后一个节点位置
    //申明一个临时结点指针,把输入插入
    Node temp=(Node)malloc(sizeof(struct node));
    temp->data=insert;//这一步赋值
    temp->p=traverse->p;//插入节点要连接traverse后面那个结点
    traverse->p=temp;//然后traverse连接插入节点
    puts("插入成功");
    puts("输出链表");
    traverse=head->p;//head是头节点并没有信息,所有要指向他的下一个结点
    while(traverse!=NULL)//只要指针不指向NULL则一直遍历
    {
        printf("%d%s",traverse->data,traverse->p==NULL ? "\n" : "->");//输出traverse结点的值
        traverse=traverse->p;//输出玩本节点就指向下一个结点
    }
    return 0;


}

result:

4
1 3 5 7
The linked list has been constructed!
1->3->5->7
Please enter the number you want to insert.
4
is inserted successfully.
The output linked list
is 1->3->4->5->7.

Guess you like

Origin blog.csdn.net/yoonaanna/article/details/123706399