链表简介(一)——创建单向动态链表及输出单向链表内容_动态创建单链表

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

前提:链表(头指针)
后续:无
返回:无
{
walker <- list

while (walker != null)
{
	print (*walker).data
	walker <- (*walker).link
}

}


## 4 代码示例


根据上述内容,可以编写创建单向动态链表及输出单向链表内容的代码示例。


代码示例内容如下:



#include <stdio.h>
#include <malloc.h>

#define STRUCT_LEN sizeof(struct student)

struct student
{
int stu_num; /* student number /
float stu_score; /
student score /
struct student
next;
};

int main()
{
/* declaration of func /
struct student
create(void);
void print(struct student * list);

struct student* list;
list = create();
print(list);

return 0;

}

/*

  • this is the create linked list function.

  • when student number is 0, create operation finish.
    /
    struct student
    create(void)
    {
    struct student* head; /* head pointer name(the name of linked list) /
    struct student
    tail; /* tail node /
    struct student
    new; /* new node /
    int node_num = 0; /
    node numbers of linked list */
    head = NULL;

    /* allocate a new code space /
    tail = new = (struct student
    )malloc(STRUCT_LEN);
    printf(“please input student number and score(delimited by SPACE): \n”);
    scanf(“%d %f”, &(*new).stu_num, &(*new).stu_score);

    while ((new != NULL) && ((new).stu_num != 0))
    {
    /
    node number add one */
    node_num = node_num + 1;

     /* first node */
     if (1 == node_num)
     {
         head = new;
     }
     else
     {
         /* let tail point new node, link tail and new */
         (*tail).next = new;
         /* move location of tail to new node */
         tail = new;
     }
     
     new = (struct student*)malloc(STRUCT_LEN);
     scanf("%d %f", &(*new).stu_num, &(*new).stu_score);
    

    }

    (*tail).next = NULL;

    return head;
    }

/*

  • this is the print linked list content function.
    */
    void print(struct student * list)
    {
    struct student *walker;
    walker = list;

    printf(“The linked list contents(student number and score) as followed:\n”);
    printf(“[student number] [student score]\n”);

    while (walker != NULL)
    {
    printf(“%d %-f\n”, (*walker).stu_num, (*walker).stu_score);
    walker = (*walker).next;
    }

    return;
    }


上述代码的编译及运行结果如下:


![](https://img-blog.csdnimg.cn/20210710102826874.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpaXRkYXI=,size_16,color_FFFFFF,t_70)


 说明:


![img](https://img-blog.csdnimg.cn/img_convert/c0ddb2ede2c0ed377c4baa7f2ece2703.png)
![img](https://img-blog.csdnimg.cn/img_convert/77405a9dc9301fc23ff6a18bf42592c7.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值