DataStructure

声明

诸多算法思想及代码源自王道数据结构,大学DS课程以及复习考研专业课涉及DS的同学,可以参照,写者水平有限,诸多错误欢迎同学们帮助查找!

829计算机专业基础

写者报考的是829计算机专业基础(专业课总分150,其中数据结构占比50分),三道算法题+2道编程题,每题十分。关于单链表操作这部分考的是编程题(10分)。

第一章 单链表

  1. 单链表的声明
typedef struct Lnode
{
   int data;//数据域
   struct Lnode *next;//指针域
}Lnode,*Linklist;
  1. 单链表的插入操作
    单链表插入操作主要有两种方法:头插法尾插法,每一种都非常重要!!!都要理解,在深入理解的基础上背诵默写!如果只是把代码死记下来是远远不够的,因为考试考的不是让你默写。
  2. 头插法
    思想:从一个带有头结点的空表开始(头结点没有数据!)重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头,直到读入结束标志为止。
    图形帮助理解
    不头结点的单链表如图:
    在这里插入图片描述带头结点的单链表如图:
    在这里插入图片描述注意带头结点的第一个结点无数据域!
    头插法的每一步过程如图:
    在这里插入图片描述
    图是书上copy来的,静下心来理解很容易就会懂的,可以自己在草稿纸上多画几遍,实在不懂可以私信写者,看到我会回复的。
    代码如下
Linklist HeadInster(Linklist &L)
{
    Lnode *p;
    int x;//数据域
    L=(Linklist)malloc(sizeof(Lnode));//建立单链表头指针
    L->next=NULL;//头指针的下一个指针为空,即链表此时为空
    scanf("%d",&x);//取值
    while (x!=9999)//循环条件,9999只是个跳出循环的数字
    {
        p=(Lnode *)malloc(sizeof(Lnode));//建立新结点
        p->data=x;//数据存入指针的数据域
        p->next=L->next;//新结点指向头结点的下一个结点
        L->next=p;//头结点的下一个结点指向新结点
        scanf("%d",&x);
    }
    return L;
}
  1. 尾插法
    思想:每次将新结点插入在链表最末端,需增加尾指针
    过程图如下:
    在这里插入图片描述
    代码如下:
Linklist TailInster(Linklist &L)
{
    int x;//数据域
    L=(Linklist)malloc(sizeof(Lnode));//建立头结点
    Lnode *s,*r=L;//增加尾指针并指向链表L
    L->next=NULL;
    scanf("%d",&x);
    while (x!=9999)
    {
        s=(Lnode *)malloc(sizeof(Lnode));//建立新结点
        s->data=x;//数据域赋值
        r->next=s;//使链表尾结点指向新结点,即新结点放在原链表最末端
        r=s;//令尾指针等于新的结点s,即r等于新链表的尾指针
        scanf("%d",&x);
    }
    L->next=NULL;
    return L;
}
//说明:尾插法可以这么理解:在循环条件下,反复令新结点s插入在原链表L的尾指针r的后面,而r又反复指向每次新链表的最后一个结点。
  1. 补充说明:今天介绍的两种插入方法非常重要,一定要理解,动手画链表的结点图型,在脑子里绕不如画图来的清晰!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值