Пример #1
0
/*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;	 	
} 
Пример #2
0
 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 );
 }
Пример #3
0
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;
}