当前位置: 代码迷 >> 综合 >> 链表,堆栈与队列
  详细解决方案

链表,堆栈与队列

热度:15   发布时间:2024-01-20 02:02:06.0

一,链表

定义:

struct link_node {int value;struct link_node * next;
};

1. 判断链表是否有没有环

使用两个快慢指针

慢指针往后面以动一个节点

快指针每次移动两个节点

// check whether the link list is a ring
//  1 for true, and 0 for false.
int isRing(struct link_node* head) {if (head == NULL) return 0;struct link_node* fast = head->next, * slow = head;while (fast->next && fast->next->next && slow->next) {if (fast == slow)return 1;fast = fast->next->next;slow = slow->next;}return 0;
}

2. 判断两个链表是否重叠

两个链表A,B 假设其长度分别为n,m。 假设n>m

将链表A的指针先以动n-m为,然后再跟B链表同时开始遍历

int getLength(struct link_node * head) {int len = 0;while(head) {len++;head = head->next;}
  相关解决方案