2:链表结构体模型(结点)
struct node
{
int data;//数据域
struct node *next;//指向下一个相同类型的结构体(指针域)
};
3:首结点(head):链表中唯一一个只指向别的结点,而不被其他结点指向的结点
首结点的地址就是整个链表的首地址,它可以带代表整个链表
4:尾结点(tail):前提是单链表中,是唯一一个只被别人指向,而不指向任何结点的结点
尾结点的next指向NULL
总结:(1)只要知道首结点head的位置,则其他结点的数据都能访问
(2)保存新的数据,只需要再创建一个结点,然后赋值添加进链表即可
不带头结点的链表
1、创建一条单链表,并且初始化
typedef int ElemType_t;
//1.设计一个链表的数据结点 结构体类型
typedef struct node{
ElemType_t data; ///数据域
struct node*next; //指针域
}Note_t;
// 2、创建一条只有首结点的单链表并进行初始化
Note_t* create_list(ElemType_t inputData)
{
//1.新建链表的首结点,即申请一个结构体Note_t的空间
Note_t *head=malloc(sizeof(Note_t));
if(head==NULL)
{
printf("malloc head error\n");
return NULL;
}
//2.初始化
head->data=inputData;//数据赋值
head->next=NULL;
//3.返回这个链表的首结点地址
return head;
}
2、尾插
//新建一个结点,将新结点插入链表中(尾插法)
void insert_nodeTolist_tail(Note_t*head,ElemType_t inputData)
{
//1.新建一个结点(申请一个结构体空间)
Note_t* newNode=malloc(sizeof(Note_t));
if(newNode==NULL)
{
printf("malloc newNode error\n");
return;
}
//2.初始化结点
newNode->data=inputData;
newNode->next=NULL;
//3.遍历链表,找到链表的最后一个结点(尾结点)
Note_t*p=head;//此时p就是首结点的地址
while(p->next!=NULL)
{
p=p->next;
链表笔记(新建节点初始化、添加节点,尾插)
于 2022-09-08 08:50:37 首次发布
这篇博客详细介绍了如何操作链表,包括新建节点并初始化,实现单链表的查找功能以确定元素是否存在,有序插入新节点,以及修改链表中指定节点的数据。通过实例代码展示了这些基本操作的实现过程。
摘要由CSDN通过智能技术生成