八月第一周学习总结

       这一周, “数据结构” 这个阶段的学习结束了,也对这个阶段进行了考核。对于我来说,我是

感觉这个阶段挺重要的,也挺难的,尤其是链表,才开始学的时候,感觉跟前面的学习形成了鲜明

的对比,但经过多次的学习与编写,也大致学会了怎么使用和编写逻辑,当然可能一些细节还是有

点问题。

       首先,链表是一种 逻辑结构为线性结构(先后顺序),存储结构为链式存储的 数据结构。

它不像顺序表那样,申请的空间是连续的,且空间大小是固定的,而链表是需要时才会申请空间,

因此,它的空间位置不是连续的,是任意的,且它可以一直申请空间,不会担心满(当然不要超过

存储空间的大小)。

        链表有两部分,一部分存数据内容,一部分存关系(即下一个节点的地址)

 如上图,p是一个头指针,用来存储数据内容的地址,方便查找链表;

head是一个头节点,通常为空,即NULL,而它的next存储了下一个节点数据内容的地址。

struct node
{//创建一个结构体,表示每个节点的内容
    char name[20];
    int age;//数据内容
    struct node * next;//创建一个指针,存储下一个节点的数据内容的地址,即表示关系;
};

struct node * list()
{//创建链表
    struct node *head=malloc(sizeof(struct node));//给结构体申请一个动态内存
    if(head == NULL)//判断头节点地址(结构体存储空间地址)是否为空
    {
        printf("malloc error\n");
        return NULL;
    }
    head->next=NULL;//让头节点为空,相当于现在只有一个节点 —— 头节点
    return head;
}

插入节点和删除节点都要看前面一个节点,因为前面一个节点的next存了当前节点的地址。

如果要在头节点后面插入一个节点,只要创建一个新节点接在头节点后面就行,如下。

//创建新节点,以及怎么连接
struct node * new = malloc(sizeof(struct node ));//为新节点申请空间

new->next = head->next;//新节点next为空

head->next = new;//头节点next存储新节点地址

如果要在新节点后在插入一个新节点,也相同方法。

如果要删除头节点后面一个节点,只要让头节点直接接入当前删除节点后一个节点就行,然后当前删除节点就会与头节点断开关系,如下。

//删除头节点后的节点
struct node * q = head->next;//创建一个指针存储删除节点的地址
head->next = q->next;//头节点next指向删除节点后一个节点的地址

总结:链表在数据结构中很常用,才开始学时一定要多画图,找到节点与节点之间的关系。注意,在插入,删除节点时,都要找前一个节点。这是我对链表最基础,最基本的了解了,当然还有很多感觉都没有写到。反正一句话就是,多画图!多画图!找到关系就很简单了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值