В односвязном списке длины n разделите нечетные и четные индексированные элементы на 2 списка с индексацией, начинающейся с 1.no новые узлы для новых списков.
#include<stdio.h> #include<stdlib.h> struct node { int info; struct node *link; }; typedef struct node *Node; Node even=NULL; Node odd=NULL; Node list=NULL; void add(int info) { Node temp=(node)malloc(sizeof struct node); Node curr; temp-> info=info; temp-> link=NULL; if (list==NULL) { list=temp; return; } curr=list; while(curr->link!=NULL) curr=curr -> link; curr->link=temp; } void display(node head) { node ptr = head; printf("[head]=>"); while (ptr!=NULL) { printf("%d=>",ptr->info); ptr=ptr -> link; } printf("[null]\n"); } void split() { node temp; node curr; while(list!=NULL) { node temp=(node)malloc(sizeof(struct node)); temp-> info=list-> info; temp -> link=NULL; if(list->info%2==0) { if(even==NULL) { even=temp; list=list->link; continue; } else { curr=even; while(curr->link!=NULL) curr=curr->link; curr->link=temp; } list=list->link; } else{ if(odd==NULL) { odd=temp; list=list->link; continue; } else{ curr=odd; while(curr->link!=NULL) curr =curr->link; curr->link=temp; } list=list->link; } } } { int i,n; printf("\n Enter the number of nodes to be inserted in the list"); scanf("%d",&n); for(i=0;i<=n;i++) add(i); printf("\n Complete list:\n"); display(list); split(); printf("\n ODD indexed elements"); printf("\n odd:"); display(odd); printf("\nEven indexed elements"); printf("\n Even:"); display(even); return 0; }
Что я уже пробовал:
Не могли бы вы мне помочь, объяснив, что я здесь делаю не так?
Это было бы очень кстати.
Спасибо.
Richard MacCutchan
- Вы можете мне помочь, объяснив, что я здесь делаю не так?"
Поскольку вы не сказали нам, в чем проблема, трудно догадаться.