我的代码在我的VS 2022上运行没有问题,为什么到leetcode上就直接报错了
题目是C语言求相交链表
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
typedef struct Node {
int val;
struct Node* next;
}Node, * ListNode;
ListNode LinkListInit();
bool createTail(ListNode L);
bool MakeLoop(ListNode L, int i);
bool hasCycle(ListNode L);
void printLinkList(ListNode L);
ListNode LinkListInit() {
Node* L;
L = (Node*)malloc(sizeof(Node)); //申请结点空间
if (L == NULL) { //判断是否有足够的内存空间
printf("申请内存空间失败\n");
}
L->next = NULL;//将next设置为NULL,初始长度为0的单链表
return L;
}
//输入一个链表的值
bool createTail(ListNode L) {
int x;
Node* s, * r = L;
printf("输入一个链表的值:\n");
scanf("%d", &x);
while (x != 9999) {
s = (Node*)malloc(sizeof(Node));
s->val = x;
r->next = s;
r = s;
scanf("%d", &x);
}
r->next = NULL;
return true;
}
//按值查找结点值
int GetSize(ListNode L, int num) {
Node* p = L;
int j = 0;
while (p != NULL && p->val != num) {
p = p->next;
j++;
}
return j;
}
//按序号查找结点值
Node* GetElem(ListNode L, int i) {
int j = 1, temp;
Node* p = L->next;
if (i == 0)
return L;//若i = 0,则返回头结点
if (i < 1) {
return NULL;//若i无效,则返回NULL
}
while (p && j < i) {//查找到第i个结点
p = p->next;
j++;
}
return p;
}
ListNode getIntersectionNode(ListNode L1, ListNode L2) {
Node * p, * q,*s,*r1,*r2;//s为第一个相同的结点
ListNode R1, R2,T1,T2,M = NULL;
int temp = 0,flag = 0,L1Size = 0,L2Size = 0;
p = L1->next;
q = L2->next;
R1 = L1;
R2 = L2;
T1 = LinkListInit();
T2 = LinkListInit();
s = (Node*)malloc(sizeof(Node));
for (; p; p = p->next) {
for (; q; q = q->next) {
if (p->val == q->val) {
temp = p->val;
flag = 1;
}
}
if (flag == 1) {
break;
}
q = L2->next;
}
L1Size = GetSize(L1, temp);
L2Size = GetSize(L2, temp);
R1 = GetElem(L1, L1Size-1);
R2 = GetElem(L2, L2Size-1);
printLinkList(R1);
printLinkList(R2);
r1 = R1->next;
r2 = R2->next;
T1 = R1;
while (r1 != NULL && r2 != NULL) {
if (r1->val != r2->val) {
return NULL;
}
r1 = r1->next;
r2 = r2->next;
}
printLinkList(T1);
return T1;
}
//输出链表
void printLinkList(ListNode L)
{
ListNode p;
p = L->next;
if ( p== NULL) {
printf("null");
}
while (p)
{
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main(void) {
int temp;
ListNode L1, L2,R,L;
L1 = LinkListInit();
L2 = LinkListInit();
L = LinkListInit();
R = LinkListInit();
printf("输入第一个链表:\n");
createTail(L1);
printf("输入第二个链表:\n");
createTail(L2);
L = getIntersectionNode(L1, L2);
//printLinkList(L);
return 0;
}