#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
struct node *create_node(int);
struct node *add_node(struct node *,int);
void asce_order(struct node *);
void desc_order(struct node *);
struct node
{
int data;
int count;
struct node *next,*previous;
};
struct node *create_node(int value)
{
struct node *pnode=(struct node *)malloc(sizeof(node));
pnode->data=value;
pnode->count=1;
pnode->next=pnode->previous=NULL;
return pnode;
}
struct node *add_node(struct node *pnode,int value)
{
if(pnode==NULL)
{
pnode=create_node(value);
return pnode;
}
else if(pnode->data == value)
{
(pnode->count)++;
return pnode;
}
else
{
if(pnode->data>value)
{
return add_node(pnode->previous,value);
}
else
{
return add_node(pnode->next,value);
}
}
}
void asce_order(struct node *pnode)
{
int i;
if(pnode->previous!=NULL)
asce_order(pnode->previous);
for(i=0;i<pnode->count;i++)
printf("%d\n",pnode->data);
if(pnode->next!=NULL)
asce_order(pnode->next);
}
void desc_order(struct node *pnode)
{
int i;
if(pnode->next!=NULL)
desc_order(pnode->next);
for(i=0;i<pnode->count;i++)
printf("%d\n",pnode->data);
if(pnode->previous!=NULL)
desc_order(pnode->previous);
}
void free_variables(struct node *pnode)
{
if(pnode==NULL)
return;
if(pnode->next!=NULL)
free_variables(pnode->next);
if(pnode->previous!=NULL)
free_variables(pnode->previous);
free(pnode);
}
int main()
{
int data;
struct node *head=NULL;
char option='y';
int choice;
while(tolower(option) == 'y')
{
printf("enter the data:");
scanf("%d",&data);
if(head==NULL)
head=create_node(data);
else
add_node(head,data);
fflush(stdin);
printf("enter the option:");
scanf("%c",&option);
}
printf("enter the choice:\n1.ascending order\n2.Descending order");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("the ascending order:\n");
asce_order(head);
break;
case 2:
printf("the descending order:\n");
desc_order(head);
break;
default :
printf("you have entered the wrong choice");
break;
}
free_variables(head);
return 0;
}
** 이진 트리를 사용하여 숫자를 정렬하기 위해 작성한 코드입니다.이 트리의 헤드 노드 만 인쇄합니다. 문제는 add_node function.When 나는 문제는 add_node()
에 여기 ** 저를 탈 도와주세요 처음 code.someone에서 문제가 될 것으로 보인다 무엇이진 트리의 모든 요소를 인쇄 할 수 없습니다.
if(value==pnode->data)
{
(pnode->count)++;
return pnode;
}
if(value<pnode->data)
{
if(pnode->previous==NULL)
{
pnode->previous=create_node(value);
return pnode->previous;
}
else
{
return add_node(pnode->previous,value);
}
}
else
{
if(pnode->next==NULL)
{
pnode->next=create_node(value);
return pnode->next;
}
else
return add_node(pnode->next,value);
}
와
가 있습니까
그것은 대신 같은 것을해야한다 당신은 당신의 문제가 I/O에 있지 않은 것이 틀림 없습니까? 또한'fflush()'는 출력 스트림에서만 작동합니다. 'fflush (stdin)'이 정의되지 않았습니다. – timrau
no.its는 두 번째 코드에서 정상적으로 작동하지만 아침에 멈춘 첫 번째 code.am에 대해 작동하지 않습니다. – starkk92