c语言单链表

  1. 链表概述

    链表是一种常见的重要的数据结构,它是动态的进行存储分配的一种结构。先说一个场景的应用,假设有若干位同学的信息需要保存,每位同学包含编号、年龄、分数。虽然对每位同学来讲可以用结构体类型的数据表示,但是对于多为同学而言能否用结构体数组表示呢?如果同学的具体数量不知道定义大了,浪费空间,定义小了则不够用,因此排除掉结构体数组。此时我们的链表就派上用场了。
    单链表结构

head表示链头指针,指向链表的第一个元素,存放第一个元素的地址(1010),链表中每个节点都包括两个部分:一为用户所需要的实际数据(如第一个节点中的01,zhang,80),二为下一节点的地址(如:1210),链表最后一个元素不在指向其他元素,称为“链尾”,它的地址部分存放的是NULL(表示空地址)。

链表中各元素在内存中不一定是连续存放的,要寻找链表中某一元素,必须先找到上一个元素,根据它提供的下一元素的地址才能找到下一个元素。如无head,则整个链表无法访问。

2 , 动态链表
2.1,建立动态链表

尾插法建立单链表的C语言源程序如下:

#include "stdafx.h"
#include "stdlib.h"

#define LEN  sizeof(struct student)

struct student {

    long int num;
    char name[10];
    float score;
    struct student *next;
};


/**尾插法建立单链表*/
struct student *creatail() {

    struct student *head, *p1, *p2;
    p1 = (struct student *)malloc(LEN);//开辟第一个节点
    scanf("%ld%s%f",&p1->num,p1->name,&p1->score);//输入第一个结点的值
    head = NULL;
    while (p1->num != 0)//学号不为零,执行循环操作
    {
        if (head == NULL) head = p1;
        else
            p2->next = p1;
            p2 = p1;
            p1 = (struct student *)malloc(LEN);
            scanf(&#
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值