|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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链表的指向给改了?改变链表的指向不应该是传入指针的地址吗? |
|