C语言链表2(创建新的节点以及尾插法)
上次我们学到:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Node
{int a;struct Node*next;
};
struct Node*head = NULL;//全局变量的声明,方便调用
struct Node*end = NULL;
首先是创建一个函数来创建新的节点:
struct Node* creatnewNode()
{
struct Node*p = (struct Node*)malloc(sizeof(struct Node));
p->data = 0;
p->next = NULL;
return p;
}
接下来是采用尾插法接入节点:分为两种情况,1如果链表为空,则就令头为插入的节点,同时这个插入的节点也为尾巴。
//struct Node* temp = creatnewNode();
if(head == NULL)
{
head = temp;
tail = temp;
}
2 若链表不为空,则尾节点的的指针指向要插入的节点,也就是要插入的节点插在尾巴的后面,同时这时这个插入的节点也就变成了尾巴。
tail->next = temp;
tail = temp;
下面是完整代码(仅能实现尾插法)
#include<stdio.h>
#include<stdlib.h>
struct Node
{int data;struct node* next;
};
struct Node*head = NULL;
struct Node*tail = NULL;
struct Node* creatnewNode()//创建新节点
{struct Node* p=(struct Node*)malloc(sizeof(struct Node));p->next=NULL;p->data=0;return p;
}
void Addnodefromtail(int a)//尾插法
{struct Node* temp = creatnewNode();temp->data = a;if(head == NULL){head = temp;tail = temp;}tail->next = temp;tail = temp;
}
void printNode()
{if(head == NULL){printf("error\n");}struct Node*p = head;while(p!=NULL){printf("%d ",p->data);p = p->next;}
}
int main()
{int i;for(i = 0;i<5;i++){Addnodefromtail(i);}printNode();return 0;
}
今天就学到这儿,关于链表的后续操作,博主会更新滴。
C语言链表2(创建新的节点以及尾插法)相关推荐
- 图解java链表基本操作篇一(头插法和尾插法)
整体代码结构定义 public class LinkedListTest <E>{} 节点数据存储定义 这样子定义只是为了可以方便地创建双向链表,循环链表,不影响单链表的创建,在创建链表的 ...
- c语言链表增加新节点,C语言 链表的创建,以及节点的增加和删除
第一次写博客,如有错误还请指正---- 今天下午倒腾了一下的链表,感觉链表就是一个小型的,用于简单的小程序的用户信息存储和管理还是很方便的. 下面为方便起见,以学生信息为例: 链表采用了动态分配的办法 ...
- 头插法(逆序)和尾插法(顺序)实现单链表的创建与排序
链表是线性表的一种表示形式,和线性表的另一种表达形式--数组不同.在链表中,没有固定长度的设定,表中节点是彼此相连的,表中的每一个节点链接下一个节点(即后继),链表头(Head)指向链表的第一个节点. ...
- 不带头结点的单链表的创建(头插法和尾插法)
1.用头插法建立不带头结点的单链表 #include<iostream> using namespace std;//单链表的结构体 typedef struct Node {int da ...
- (最详细)c语言尾插法头插法代码讲解
1.尾插法 尾插法 头指针和尾指针都指向头结点,然后往里边插入元素, 每插入一个元素尾指针就后移一下 其中如下图所示 尾插法的核心代码是: pointer->next = s; //pointe ...
- 单向链表 头插法尾插法
链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个结点里存到下一个结点的地址.链表在存储数据结构的内存中有两块区域.一块区域用来存 ...
- Java单链表插入基本操作(头插法、尾插法、任意位置插入法)
一.单链表的头插法 1.创建一个NODE节点的类,写一个public void addFirst()的函数来实现链表的头部插入,最后写一个public void display()的函数实现链表的打 ...
- 翻转链表II[翻转链表3种方式+dummyHead/头插法/尾插法]
翻转链表 前言 一.翻转链表中间部分 二.dummyHead&头插法&尾插法 1.一次扫描 + 翻转链表(另一次扫描) 2.一次扫描&头插法&尾插法(进阶) 总结 参考 ...
- C语言的双向链表头插法和尾插法,指定节点删除
文章目录 前言 头插法 尾插法 删除节点 测试代码如下 前言 双向链表和单链表的唯一区别就是多个一个指针域而已,该指针域可以访问链表的上一个节点. 关于构造双向链表的过程我们常见的有两种方法,和单链表 ...
最新文章
- python selenium 等待页面加载完毕_Selenium_等待页面加载完毕
- Catterplots包,让你绘制不一样的图
- input禁止光标_表单中readonly的input等标签,禁止光标进入(focus)的几种方式
- 带指针C语言代码,C语言指针(示例代码)
- float去掉小数点之后_float类型的存储方式
- vue2/3绑定原理比较 + vue3(ts)基础语法(ref和toRefs、watch)
- 手工释放linux内存——/proc/sys/vm/drop_caches
- 隐藏了十年的 Sudo 漏洞曝出:无需密码就能获取 root 权限
- Linux 操作系统开篇!
- SCI从入门到精通(二)——如何阅读文献
- 读写分离MYSQL类
- 自定义Promise
- 湖北校园天翼飞young使用路由器上网
- C#——已知两点及半径,求圆心坐标
- 商业云平台和开源云平台
- html li去掉前面的小黑点 项目符号
- 如何将pdf生成二维码链接?
- 雷达方程 与 根据用途演化的其它形式
- iexplore出错
- TFS映射关系出错的几种