#include <stdio.h>
#include <malloc.h>
typedef struct Tag_Node{
struct Tag_Node *left;
struct Tag_Node *right;
int value;
}TNode;
TNode *root = NULL;
void append(int value){
TNode *NewNode = (TNode *) malloc(sizeof(TNode));
NewNode -> value = value;
NewNode -> left = NULL;
NewNode -> right = NULL;
if (NULL == root){
root = NewNode;
return;
}
else{
TNode *temp = root;
while((value >= temp -> value && temp -> left != NULL) || (value < temp -> value && temp -> right != NULL)){
while(value >= temp ->value && temp -> left!= NULL){
temp = temp -> left;
}
while (value < temp -> value && temp -> right != NULL )
temp = temp -> right;
}
if (value >= temp -> value){
temp -> left = NewNode;
NewNode -> right = temp;
}else{
temp -> right = NewNode;
NewNode -> left = temp;
}
return ;
}
}
void print(){
TNode *sidenode = root;
if (NULL == root){
printf("there is no value!\n");
return ;
}
if (root -> left != NULL){
sidenode = root -> left;
}else{
sidenode = root;
}
while(1){
if (sidenode -> left == NULL)
break;
sidenode = sidenode -> left;
}
while(sidenode != NULL){
printf("%d ", sidenode -> value);
sidenode = sidenode -> right;
}
printf("\n");
return ;
}
int main(){
append(43);
append(34);
append(17);
print();
return 0;
}
双向链表 数字按降序排列
最新推荐文章于 2024-04-01 00:38:08 发布