12.13-12.19周部分总结 链表浅析(感叹号感叹号感叹号)

这篇博客主要介绍了单向链表的创建与插入,包括语法解释、内存分配、链表创建、尾插法和头插法的插入操作。此外,还探讨了循环链表的创建及其特点,并提及了单向链表的排序方法。
摘要由CSDN通过智能技术生成

目录

 单向链表创建与插入

语法解释

 内存分配

链表创建

链表插入(尾插法)用于顺序输出

 链表插入(头插法)用于逆序输出

 循环链表的创建

​ 链表排序


 单向链表创建与插入

语法解释

typedef struct link
{
    int data;
    struct link* next;
} linklist, * pointer;
//这里将  结构体名称struct link  起别名为linklist
//        结构体类指针  别名为pointer

 内存分配

head=(pointer)malloc(sizeof(struct link));
head=(pointer)malloc(sizeof(linklist));
//以上两种分配方式都可
//格式   head=(结构体指针类)malloc(sizeof(结构体名称));

一个有意思的现象  在codeblocks上C语言分配

 head=(pointer)malloc(sizeof(struct link));

不能省去struct  只能struct link或者用别名  linklist

而c++却可以直接写成

head=(pointer)malloc(sizeof(link));

不知道为什么

链表创建

#include <stdio.h>
#include <stdlib.h>
typedef struct link
{
    int data;
    struct link* next;
} linklist, * pointer;

int main()
{
    int n;
    pointer head,ended,p;
    head=(pointer)malloc(sizeof(linklist));
    head=ended;
    //如令这两个节点指向NULL  可以拿来判断链表是否为空
    //ended 代替其遍历  head就代表这个链表
    return 0;
}

为什么链表要带头结点,而且不存放数据?

//带头节点不管链表是否为空  指针都不会指向空

//在对空链表的增加操作上带头结点的直接head->next=creat;//creat为新开辟的同类型空间

//区别不是很大

头节点也能存放数据  如链表长度 head->data++;

head->data=0;
//一定要记得初始化   头结点的数据域的值
//但是不能在定义结构体的时候初始化data的值  会报错!!
for(int i=0;i<5;i++)
        head->data++;
printf("%d",head->data);
//结果是5

链表插入(尾插法)用于顺序输出

#include <stdio.h>
#include <stdlib.h>
typedef struct link
{
    int data;
    struct link* next;
} linklist, * pointer;


int main()
{
    //尾插法
    int n;
    printf("请输入链表节点数:\n");
    scanf("%d",&n);
    pointer head,ended,p,creat;

    head=(pointer)malloc(sizeof(linklist));       #1
    ended=head;
                         
    //head->data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值