10 创建单链表(创建头结点的方式,尾插入初始化赋值)

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

//链表中节点的结构
typedef struct Link {
    int  data;
    struct Link* next;
}link;

//链表初始化
link* initLink(link* head_node) {
    head_node = (link*)malloc(sizeof(link)); //头结点申请空间
    head_node->data = 000; //头结点的数据域是000
    head_node->next = NULL;

    link* tmp = head_node; //tmp,保存头结点

    //尾插入初始化赋值
    printf("输入若干个值保存到链表中:\n");
    int num = 0;
    while (num != -1) { //-1代表结束
        scanf("%d", &num);
        link* new_node = (link*)malloc(sizeof(link)); //申请新的结点
        new_node->data = num;
        new_node->next = NULL;
        tmp->next = new_node;  //头结点的指针域指向这个新申请的结点
        tmp = new_node;  //头结点后移
    }
    printf("头指针指向的值是:%d\n", head_node->next->data);//1
    return head_node;  //将头结点返回
}


void showLink(link* head_node) {
    link* tmp = head_node;  //tmp,保存头结点
    while (tmp->next != NULL) { 
        if (tmp->data == -1) {
            break;
        }
        printf("%d ", tmp->data);
        tmp = tmp->next;
    }
    printf("\n");
}


void main() {
    link* myheadNode = NULL; //创建头结点
    myheadNode = initLink(myheadNode); //获得经过初始化后的头结点
    printf("初始化链表为:\n");
    showLink(myheadNode);
    
}

 

 头结点的数据域是0,也可从第一个结点开始遍历

posted @ 2020-03-15 23:02  shanlu  阅读(630)  评论(0编辑  收藏  举报