链表操作

定义(c语言)
struct ListNode{
      int val;
      struct ListNode *next;
}ListNode;
切记,使用链表时一定要开辟空间。
    struct ListNode *l1 = (struct ListNode *) malloc (sizeof(ListNode));
    struct ListNode *p1 = l1;
    for(int i = 1;i <= 3; i++)
    {
        p1->val = i;
        p1->next = (struct ListNode *) malloc (sizeof(ListNode));
        p1 = p1->next;
    }
 
 
 
定义(c++)
struct ListNode {
      int val;
      ListNode *next;
      ListNode() : val(0), next(nullptr) {}
      ListNode(int x) : val(x), next(nullptr) {}
      ListNode(int x, ListNode *next) : val(x), next(next) {}
};
切记,使用链表时一定要开辟空间。
ListNode *l1 = new ListNode();
    for(int i = 1;i <= 3; i++)
    {
        p1->val = i;
        p1->next = new ListNode(i+1);
        p1 = p1->next;
    }
 
 
 
单向链表反转的四个方式(无代码,只有思想)
假如链表为 1->2->3->4
 
 
方法一
另外定义一个指针,取出 2 这个节点,然后将 1 这个节点指向 3, 再将 1 节点挂在 2 节点后面,以此类推。看下方
1->2->3->4 ↓
2->1->3->4 ↓
3->2->1->4 ↓
4->3->2->1
 
方法二,构造另外一个链表,每次取出一个节点,然后以头插方式插入新链表,新节点变化看下方。
1 ↓
2->1 ↓
3->2->1 ↓
4->3->2->1
 
方法三,思路如下拆分链表在合并
1->2->3->4
1 2->3->4
2->1 3->4
3->2->1 4
4->3->2->1
 
方法四,递归遍理如下
第一次,遍历到 4 节点,使其指向 3 节点
第二次,遍理到 3 节点,使其指向 2 节点
以此类推
1->2->3->4
1->2->3<-4
1->2<-3<-4
1<-2<-3<-4
posted @ 2024-07-13 16:00  璀丶璨星灬空  阅读(12)  评论(0编辑  收藏  举报