将一个带头结点的单链表A分解为两个带头结点的单链表A和B,使得A表中含有序号为奇数的元素,B表含有序号为偶数的元素,且保持相对顺序不变
应好好分析指针变化,可减少冗余代码!!!
#include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node *next; }LNode,*LinkList; void TailCreate(LinkList &L) { L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; LNode *p,*r=L; int x; scanf("%d",&x); while(x!=999) { p=(LNode*)malloc(sizeof(LNode)); p->data=x; p->next=NULL; r->next=p; r=p; scanf("%d",&x); } } void displayList(LinkList L) { LNode *p=L->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } } void Split(LinkList &A) { LNode *B=(LinkList)malloc(sizeof(LNode)); B->next=NULL; LNode *pa=A,*pb=B,*p=A->next; A->next=NULL; int count=0; while(p) { count++; if(count%2==0) { pb->next=p; pb=p; } else { pa->next=p; pa=p; } p=p->next; } pa->next=NULL; pb->next=NULL; displayList(A); printf("\n"); displayList(B); } int main() { LinkList L; TailCreate(L); displayList(L); printf("\n"); Split(L); return 0; }
标签:10,38,LNode,int,pb,next,LinkList,NULL From: https://www.cnblogs.com/simpleset/p/17744418.html