首页 > 其他分享 >12月14日总结

12月14日总结

时间:2025-01-10 18:47:29浏览次数:1  
标签:总结 head 12 ListNode 14 next current newNode NULL

今日学习了,单链表的基本操作:
定义:
typedef struct ListNode { int data; struct ListNode *next; } ListNode;
初始化:
void insertAtHead(ListNode **head, int value) { ListNode *newNode = (ListNode *)malloc(sizeof(ListNode)); newNode->data = value; newNode->next = *head; *head = newNode; }
插入:
头插法:
void insertAtHead(ListNode **head, int value) { ListNode *newNode = (ListNode *)malloc(sizeof(ListNode)); newNode->data = value; newNode->next = *head; *head = newNode; }
尾插法:
void insertAtTail(ListNode **head, int value) { ListNode *newNode = (ListNode *)malloc(sizeof(ListNode)); newNode->data = value; newNode->next = NULL; if (*head == NULL) { *head = newNode; return; } ListNode *current = *head; while (current->next!= NULL) { current = current->next; } current->next = newNode; }
删除:
void deleteAtHead(ListNode **head) { if (*head == NULL) { return; // 空链表,无需删除 } ListNode *temp = *head; *head = (*head)->next; free(temp); }
查找:
按值查找:
void deleteAtHead(ListNode **head) { if (*head == NULL) { return; // 空链表,无需删除 } ListNode *temp = *head; *head = (*head)->next; free(temp); }
按索引查找:
ListNode* searchByIndex(ListNode *head, int index) { int count = 0; ListNode *current = head; while (current!= NULL && count < index) { current = current->next; count++; } if (count == index && current!= NULL) { return current; // 找到指定索引位置的节点,返回其指针 } return NULL; // 索引超出范围或链表为空,返回 NULL }

标签:总结,head,12,ListNode,14,next,current,newNode,NULL
From: https://www.cnblogs.com/Genghao11/p/18664498

相关文章

  • 12月15日总结
    今日全身心投入到数据结构中双链表的学习,相较于之前接触的单链表,双链表有着独特的魅力与复杂性。概念上,双链表的每个节点不仅包含指向后继节点的指针(如同单链表),还增设了指向前驱节点的指针。这一设计使得链表在双向遍历上独具优势,无论是从表头向表尾推进,还是反向操作,都能轻松实现......
  • 12月16日总结
    今日学习了双链表的相关操作:一、创建双链表创建双链表的第一步是定义节点结构体,它包含数据域、指向前驱节点的指针prev和指向后继节点的指针next。//双链表节点结构体定义typedefstructDoubleListNode{intdata;structDoubleListNode*prev;structDoubleListNode......
  • 12月17日总结
    今日重点学习数据结构中的栈,它遵循后进先出原则,类似单端进出的储物箱,顶部是唯一的数据出入口,这使其在处理特定顺序问题上优势显著。学习中探究了栈的基本操作,初始化时用结构体表示栈,含存储数据的数组(或链表)与指示栈顶的指针top,初始top设为-1代表空栈。入栈是先让top加1......
  • 12月22日
    今日深入学习了Java中的注解(Annotations)机制,这是Java语言的一个重要特性,用于为程序元素(如类、方法、字段等)提供元数据。注解不直接影响程序的直接运行,但可以被编译器、工具或运行时环境读取和处理,从而实现各种强大的功能,如代码生成、依赖注入、测试等。注解是Java语言中的一种特......
  • 12月18日总结
    今日学习了栈的相关操作:初始化:defineMAX_SIZE100//假设栈的最大容量为100typedefstructStack{intdata[MAX_SIZE];inttop;}Stack;//栈的初始化函数voidinitStack(Stack*s){s->top=-1;}一、增-入栈(Push)入栈操作是向栈顶添加一个新元素,使其成为新的......
  • 12月19日总结
    今日深入学习了数据结构中的队列,它与之前所学的栈有着截然不同的特性。概念上,队列遵循先进先出(FIFO)原则,就如同日常生活中的排队场景,先到的人先接受服务,最先进入队列的元素最先被取出。它有队头(front)和队尾(rear)两个关键指针,分别用于标识队列的起始位置和末尾位置,元素从队尾进入,从......
  • 12月24日
    学习内容概述今日深入学习了Java中的泛型(Generics)机制,这是Java语言的一个重要特性,用于在编译时提供类型安全的集合和方法。泛型可以提高代码的复用性、可读性和安全性,是现代Java编程中不可或缺的一部分。泛型的基本概念泛型是一种在编译时提供类型检查的机制,允许在定义类、接口......
  • 12月15日
    今日重点学习了Java中的多线程编程,这是现代编程中实现并发和提高程序性能的关键技术。多线程可以让程序同时执行多个任务,充分利用计算机的多核处理器资源,提升程序的执行效率和响应速度。线程是程序执行的最小单位,是操作系统能够进行调度的最小单位。一个进程可以包含多个线程,这些......
  • 12月16日
    在多线程环境中,多个线程可能会同时访问和修改共享资源,这可能导致数据不一致和竞态条件等问题。为了保证数据的正确性和一致性,需要对线程进行同步和互斥控制。同步代码块:通过在代码块前加上synchronized关键字,可以将代码块标记为同步代码块。同步代码块需要指定一个锁对象,当线程进......
  • 12月12日总结
    今日复习了线性表中顺序表的相关操作初始化:voidInitList(SqList&L){ //申请存储空间 L.data=(int*)malloc(InitSize*sizeof(int)); L.length=0; L.MaxSize=InitSize;}插入:boolListInsert(SqList&L,inti,inte){ if(i<1||i<L.length+1) //判断i的范围是否有......