孤岛惊魂4贝根明cos:分类链表,根据余数分成三部分

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 02:00:35
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
typedef int ET;
typedef struct LNode{
ET data;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList *L,int n){
LinkList p;int i;
*L=(LinkList)malloc(sizeof(LNode));
if(!(*L)) exit(OVERFLOW);
(*L)->next=NULL;
for( i=n;i>0;--i){
ET c;
p=(LinkList)malloc(sizeof(LNode));
printf("please input the data:");
scanf("%d",&c);
p->data=c;
p->next=(*L)->next;(*L)->next=p;
}
}/*CreatListL*/

void OutPut(LinkList L){
LinkList p;
p=L->next;
while(p){
printf(" %d",p->data);
p=p->next;}
}/*OutPut LinkList*/

void SortingList(LinkList L,LinkList *LB,LinkList *LC,LinkList *LD){

LinkList pa,pb,pc,pd;
pa=L->next;

pb=*LB;pc=*LC;pd=*LD;
while(pa){
if(pa->data%3==0){pb->next=pa; pb=pa; pa=pa->next;}
else if (pa->data%3==1){pc->next=pa; pc=pa; pa=pa->next;}
else {pd->next=pd; pd=pa; pa=pa->next;}
}
}/*Sorting LinkList*/

void main(){
int n;
LinkList L,L1,L2,L3;
L1=(LinkList)malloc(sizeof(LNode));
L1->next=NULL;
L2=(LinkList)malloc(sizeof(LNode));
L2->next=NULL;
L3=(LinkList)malloc(sizeof(LNode));
L3->next=NULL;
printf("please input the number of LinkList");
scanf("%d",&n);
CreateList(&L,n);
OutPut(L);
SortingList(L,&L1,&L2,&L3);

printf("the LB's data is:");
OutPut(L1);
printf("the LC's data is:");
OutPut(L2);
printf("the LD's data is:");
OutPut(L3);
getche();
}
运行下来是死循环,本来意图是根据链表中的元素除以3得到的余数0.1.2.分成三类。不创建新的链表