`
wudikua123
  • 浏览: 61873 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求链表中间节点的值,检测链表的环

 
阅读更多
求链表中间节点的值,检测链表的环

int loop(struct Node* head){
	struct Node* p1 = head;
	struct Node* p2 = head;
	int i = 0;
	while(p1 && p2){
		i++;
		if(i!=1){
			if(p1->value == p2->value){
				printf("%d\n",i);
				return 1;
			}	
		}
		p1 = p1->next;
		if(p2->next != null){
			p2 = p2->next->next;	
		}else{
			return 0;
		}
		
	}
	printf("%d\n",i);
	return 0;
}

int middle(struct Node* head){
	struct Node* p1 = head;
	struct Node* p2 = head;
	while(p2){
		p2 = p2->next;
		if(p2 != null){
			p1 = p1->next;
			p2 = p2->next;
		}
	}
	return p1->value;
}

int main(int argc,char *argv[]){
	/**
	struct Node* head = create();
	print(head);
	
	struct Node* x = malloc(sizeof(struct Node));
	x->value = 1;
	delete(x,&head);
	print(head);
	**/
	struct Node* p1 = malloc(sizeof(struct Node));
	p1->value = 1;
	struct Node* p2 = malloc(sizeof(struct Node));
	p2->value = 2;
	struct Node* p3 = malloc(sizeof(struct Node));
	p3->value = 3;
	struct Node* p4 = malloc(sizeof(struct Node));
	p4->value = 4;
	struct Node* p5 = malloc(sizeof(struct Node));
	p5->value = 5;
	p1->next = p2;
	p2->next = p3;
	p3->next = p4;
	p4->next = p5;
	p5->next = null;
	printf("中间节点数值:%d\n",middle(p1));
	return 0;	
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics