C语言链表基础创建

链表头结点创建
#include<stdio.h>
#include<stdlib.h>

//定义链表结构体
typedef struct Node{
    int data;                 //数据域
    struct Node *next;        //指针域
}Node , *LinkList;


int main(){

    //创建头结点
    LinkList head = (Node *)malloc(sizeof(Node));

    //判断头结点是否创建成功
    if(!head){
        printf("头结点空间开辟失败!");
        return 0;    //如若创建失败直接终止函数
    }

    //现在头结点的指针域并没有存放新的结点所以现在要给他赋空值
    head->next = NULL;

    //定义输入数据子函数并传送头结点指针
    intput(head);
    //定义遍历链表子函数并传送头结点指针
    output(head);
}
链表输入数据(尾插法)
//调用函数并把头结点指针传给子函数input
void input(LinkList head){

    //判断传过来的head是否为空
    if(!head){
        return;       //如若为空终止函数 
    }

    int value;    //定义要输入数据的长度
    
    int i;        //循环变量
    
    printf("请输入链表的长度:");
    scanf("%d",&value);

    //定义一个指针变量来接收头结点head
    Node *p = head;
    
    //循环输入链表数据
    for(i = 0; i < value; i++){
        //申请新的结点空间
        Node *q = (Node *)malloc(sizeof(Node));

        //输入链表数据
        printf("%d",&q->data);
        
        p->next = q;        //将新的结点q的地址存放在p的指针域里面
        p = p->next;        //将p的位置移动至当前q位置,然后再执行上面那条代码创建出新的q结点
    }

    p->next = NULL;        //循环结束,将最后一个结点指针域不指向任何东西,需要赋空值
}
遍历链表
void output(LinkList head){
    //判断传过来的head是否为空
    if(!head){
        return;       //如若为空终止函数 
    }
    
    //定义指针接收head->next就是首元结点,第一个有数据的结点
    Node *p = head->next;
    
    //while进行循环条件判断当p不为空就进行循环为空的话跳出循环
    while(p){    
        printf("%d ",p->data);    //打印数据
        p = p->next;    //指针后移,依次遍历每个数据
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值