C语言实现链表

本文介绍了如何使用C语言定义链表结构(struct student),包括创建链表(通过节点链接)、删除节点、更新节点值以及打印链表的基本操作。通过示例代码展示了如何实现这些功能,并提供了相应的删除和改变值的函数实现。
摘要由CSDN通过智能技术生成

首先要定义一个链表的单个节点

这里用到def struct 定义一个结构体

程序如图:

typedef struct student{
    int score; //链表中要存储的值
    struct student *next;//创建一个指针用来存储下一个node的地址
}LinkList;

 创建链表:

一个链表中的头节点,他是不存储数值的,只存储下一个节点地址,我们调用链表,一般都是调用链表头节点的地址。

LinkList *creat(int n){
    LinkList *head, *node, *end;//定义头节点,普通节点,尾部节点;
    head = (LinkList*)malloc(sizeof(LinkList));//分配地址
    end = head;         //若是空链表则头尾节点一样
    for (int i = 0; i < n; i++) {
        node = (LinkList*)malloc(sizeof(LinkList));
        scanf("%d", &node->score);
        head->next = node;
        end = node;
    }
    end->next = NULL;//结束创建
    return head;
}

删除链表:

void delet(LinkList *list,int n){
    LinkList *t = list;
    LinkList *tmp = NULL;
    int i = 0;
    while(i<n&&t!=NULL){
        tmp = t;
        t= t->next;
        i++;
    }
    if(t!=NULL){
        tmp->next = t->next;
        free(t);
    }
    else{
        printf("this node is NULL");
    }
}

改变链表值:

void change(LinkList *list,int n){
    LinkList *t = list;
    int i = 0;
    while(t!=NULL&&i<n){
        t = t->next;
        i++;
    }
    if(t!=NULL){
        printf("please input  value you want by change\n");
        scanf("%d",&t->score);
    }
    else{
        printf("节点不存在\n");
    }
}

插入链表:

void change(LinkList *list,int n){
    LinkList *t = list;
    int i = 0;
    while(t!=NULL&&i<n){
        t = t->next;
        i++;
    }
    if(t!=NULL){
        printf("please input  value you want by change\n");
        scanf("%d",&t->score);
    }
    else{
        printf("节点不存在\n");
    }
}

打印链表: 

void show(LinkList *list){
    LinkList *t = list;
    while(t->next != NULL){
        t = t->next;
        printf("%d",t->score);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值