2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1. Frage
Geben Sie den Kopfknoten der einfach verknüpften Liste an
head
Bitte suchen Sie den mittleren Knoten der verknüpften Liste und geben Sie ihn zurück.Bei zwei Zwischenknoten wird der zweite Zwischenknoten zurückgegeben.
2. Code-Implementierung (schnelle und langsame Zeiger)
- //4.查找链表的中间结点
- #define _CRT_SECURE_NO_WARNINGS 1
- #include <stdio.h>
- #include <stdlib.h>
- #include <assert.h>
-
-
- typedef int SLTDataType;
-
- typedef struct SListnode
- {
- SLTDataType val;
- struct SListnode* next;
- }ListNode;
-
- ListNode* createNode(SLTDataType val)
- {
- ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
- if (newnode == NULL)
- {
- perror("malloc");
- exit(1);
- }
- newnode->val = val;
- newnode->next = NULL;
- return newnode;
- }
-
-
-
- struct ListNode* middleNode(struct ListNode* head)
- {
- if (head == NULL)
- {
- return head;
- }
- ListNode* slow, * fast;
- slow = fast= head;
- while (fast && fast->next)
- {
- slow = slow->next;
- fast = fast->next->next;
- }
- return slow;
- }
-
- int main()
- {
- ListNode* node1, * node2, * node3, * node4, * node5, * node6;
-
- node1 = createNode(1);
- node2 = node1->next = createNode(2);
- node3 = node2->next = createNode(3);
- node4 = node3->next = createNode(4);
- node5 = node4->next = createNode(5);
- //node6 = node5->next = createNode(6);//创建一个链表
-
- ListNode* node = middleNode(node1);
- printf("%d", node->val);
-
- return 0;
- }