/*Position Find(int X,SearchTree T)//查找元素X的位置 { if(T==null) { return null; } else if(X<T->Element) return Find(X,T->Left); else if(X>T->Element) return Find(X,T->Right); else return T; } */ int FindMid(int X,SearchTree T)//查找元素X的位置 { int num=0; if(T==null) { //printf("错误:二叉树为空"); return 0; } else { if(X<T->Element) num = FindMid(X,T->Left); else if(X>T->Element) num = FindMid(X,T->Right)+FindMid(T->Element,T); else num=Num(T->Left)+1; } return num; }
void reorderList(ListNode* head) { if( !head || !head->next ) { return; } ListNode* mid = FindMid( head ); ListNode* second_head = mid->next; mid->next = NULL; second_head = ReverseLL(second_head); head = Reorder( head, second_head ); }
int main() { int input = -1; int x = 0; int pos = 0; int k = 0; LinkList mylist; pListNode tmp = NULL; pListNode ret = NULL; InitLinklist(&mylist); menu(); while(1) { printf("请输入选项:\n"); scanf("%d",&input); switch(input) { case POPB: Popback(&mylist); break; case POPF: Popfront(&mylist); break; case PUSB: printf("请输入要插入的数据:\n"); scanf("%d",&x); PushBack(&mylist,x); break; case PUSF: printf("请输入要插入的数据:\n"); scanf("%d",&x); Pushfront(&mylist,x); break; case INSE: printf("请输入要插入的数据:\n"); scanf("%d",&x); printf("请输入要插入的位置(哪个数据之前):\n"); scanf("%d",&pos); Insert(&mylist,FindNode(&mylist,pos),x); break; case REMO: printf("请输入要删除的数据:\n"); scanf("%d",&x); Remove(&mylist,x); break; case REMOA: RemoveALL(&mylist); break; case PRINT: Printlist(&mylist); break; case ERASE: printf("请输入要擦除的位置(哪一个数字):\n"); scanf("%d",&pos); Erase(&mylist,FindNode(&mylist,pos)); break; case BUBBL: BubbleSort(&mylist); break; case FIND: printf("请输入要查找的数字:"); scanf("%d",&pos); FindNode(&mylist,pos); printf("%p",FindNode(&mylist,pos)); case REVERSE: Reverselist(&mylist); break; case INSEF: printf("请输入要插入的数据:\n"); scanf("%d",&x); printf("请输入要插入的位置(哪个数据之前):\n"); scanf("%d",&pos); InsertFrontNode(FindNode(&mylist,pos),x); break; case FINDM: ret = FindMid(&mylist); printf("中间结点为 %d\n",ret->data); break; case DELB: printf("请输入k的值:"); scanf("%d",&k); Delbackn(&mylist,k); break; case EXIT: return 0; break; default: printf("输入错误!\n"); break; } } system("pause"); return 0; }