专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“专业文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取,非会员用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文库认证用户/机构上传的专业性文档,需要文库用户支付人民币获取,具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档。
涉及到单链表的基本操作有如下:
1、图中的head表示头指针,而在创建单链表中的入参phead是指向指针的指针;即*phead等同于head,*head指向头节点;
2、初始化和创建整表的函数中,为什么入参是linkList *类型的参数呢,为什么不是Node *类型的;之前我的理解是可以使用Node*类型的入参,这样声明一个Node *head,这样在创建整表的函数中可以直接createList(head,10),直接传入头指针,但是尝试过以后,会在通过头指针访问各节点数据的时候,弹出错误窗口,原因还不太清楚;
3(补充)在看《C和指针》258的时候,看到了这么一句话,好像可以解释为什么需要传入链表的基本操作函数中的入参是一个指针类型的变量;
在一条简单的对i赋值的语句就可以完成任务的情况下,为什么还要使用更为复杂的涉及间接访问的方法呢?这是因为简单赋值并不总是可行,例如链表的插入。在那些函数中,我们无法使用简单赋值,因为变量名在函数的作用域内部是未知的。函数所拥有的只是一个指向需要修改的内存位置的指针,所以要对该指针进行间接访问操作以访问需要修改的变量。
(六)获取指定位置处的节点元素;
printf("您所查询的节点%d,应该大于0,请重新输入查询\n",i); printf("您所查询的节点%d,已经超出了数组的长度\n",i);
插入节点分为两种,一种是在链表的长度范围内插入节点,第二种是在链表的尾部追加一个节点;
假设链表的长度为10,第一种可以在1-10位置处插入节点,比如在第10个位置插入一个节点,则原先的第10节点变为了11节点,但是第二种是所有节点位置都不变,在第11个位置追加一个新的节点;
// 链表为空,在第1个位置插入一个新的节点; printf("链表为空,默认在第一个位置插入一个节点.\n"); // 链表非空的情况下,可以在i=1~length的位置插入节点,如果超过了链表的长度,就会提示错误; // 其实如果在length+1的位置处插入一个新节点,就相当于在尾部追加一个节点,在本函数中会报错,可以单独实现一个函数; printf("您要插入的位置,超过了链表的长度 %d,请重新操作!\n",j);
}//条件最多定位到最后一个节点; printf("您要删除的节点,超过了链表的长度 %d,请重新操作!\n", j);
算法本身非常简单,就是最普通的单链表,插入。
不解的地方在于,为什么第一个形参要用按引用传参?
下面算法是摘自严蔚敏老师的数据结构。
以下是结构体定义和插入算法: