链表笔记(新建节点初始化、添加节点,尾插)

这篇博客详细介绍了如何操作链表,包括新建节点并初始化,实现单链表的查找功能以确定元素是否存在,有序插入新节点,以及修改链表中指定节点的数据。通过实例代码展示了这些基本操作的实现过程。
摘要由CSDN通过智能技术生成
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;
  
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值