马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node* next;
} LNode;
void split(LNode* A, LNode* &B)
{
LNode* p, * q, * r;
B = (LNode*)malloc(sizeof(LNode));
B->next = NULL;
r = B;
p = A;
while (p->next != NULL )
{
if (p->next->data % 2 == 0)
{
q = p->next;
p->next = q->next;
q->next = NULL;
r->next = q;
r = q;
}
else
p = p->next;
}
}
void create(LNode** head)
{
*head = (LNode*)malloc(sizeof(LNode));
(*head)->next = NULL;
LNode* temp = NULL, * r = *head;
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
temp = (LNode*)malloc(sizeof(LNode));
temp->next = NULL;
scanf("%d", &temp->data);
temp->next = r->next;
r->next = temp;
r = temp;
}
}
int main()
{
LNode* A, * B;
/*A = (LNode*)malloc(sizeof(LNode));
B = (LNode*)malloc(sizeof(LNode));*/
create(&A);
split(A, B);
while (A->next != NULL)
{
printf("%d ", A->next->data);
A = A->next;
}
putchar('\n');
while (B->next != NULL)
{
printf("%d ", B->next->data);
B = B->next;
}
return 0;
}
这个 split() 函数为什么只传了 LNode *A, *B;
split(A, B); // void split(LNode *A, LNode *&B)
为什么这样就把A链表的指向给改了?改变链表的指向不应该是传入指针的地址吗? |