奇数值结点链表: 输入若干个正整数(输入-1为结束标志) 建立一个单向链表,头指针为L,将链表L 中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息。试编写相应程序。-笔试面试资料

这是qklbishe.com第20119 篇笔试面试资料
提供答案分析,通过本文《奇数值结点链表: 输入若干个正整数(输入-1为结束标志) 建立一个单向链表,头指针为L,将链表L 中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息。试编写相应程序。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

奇数值结点链表: 输入若干个正整数(输入-1为结束标志) 建立一个单向链表,头指针为L,将链表L 中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息。试编写相应程序。

奇数值结点链表: 输入若干个正整数(输入-1为结束标志) 建立一个单向链表,头指针为L,将链表L 中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息。试编写相应程序。 例行公事。
https://blog.csdn.net/kirisame9/article/details/87347777
// 11-7 // 奇数值结点链表   #include <stdio.h> #include <stdlib.h>   struct ListNode { 	int data; 	struct ListNode *next; };   struct ListNode *readlist(); struct ListNode *getodd(struct ListNode **L);   void printlist (struct ListNode *L) { 	struct ListNode *p = L; 	while (p) 	{ 		printf("%d ", p->data); 		p = p->next; 	} 	 	printf("n"); }   int main() { 	struct ListNode *L, *Odd; 	L = readlist(); 	Odd = getodd(&L); 	printlist(Odd); 	printlist(L); 	 	return 0; }   struct ListNode *readlist() { 	int data;		// 输入数据  	int size = sizeof(struct ListNode);		// 单个链表结点占据的内存  	struct ListNode *head, *tail, *p; 	head = tail = NULL; 	 	scanf("%d", &data); 	while (data!=-1) 	{ 		p = (struct ListNode *) malloc(size); 		p->data = data; 		p->next = NULL; 		if (head == NULL) 		{ 			head = p; 		} 		else 		{ 			tail->next = p; 		} 		tail = p;	 		scanf("%d", &data); 	}   	 	return head; }   struct ListNode *getodd(struct ListNode **L) { 	int data; 	int size = sizeof(struct ListNode); 	struct ListNode *head, *tail, *pNew;		// 链表New 	struct ListNode *ptr1, *ptr2; 	head = tail = NULL; 	 	 	// L链表的head是奇数  	while (*L!=NULL && (*L)->data%2!=0) 	{ 		data = (*L)->data; 		// 将L链表的奇数重新组成一个新的链表  		pNew = (struct ListNode *) malloc(size); 		pNew->data = data; 		pNew->next = NULL; 		if (head==NULL) 		{ 			head = pNew; 		} 		else 		{ 			tail->next = pNew; 		} 		tail = pNew;	 		 		// 删除L链表的奇数 		ptr2 = *L; 		*L = (*L)->next; 		free(ptr2);		 	} 	 	if (*L==NULL) 	{ 		return NULL; 	} 	 	// L链表的head非奇数  	ptr1 = *L; 	ptr2 = (*L)->next; 	while (ptr2!=NULL) 	{ 		data = ptr2->data; 		if (data%2!=0) 		{ 			// 将L链表的奇数重新组成一个新的链表  			pNew = (struct ListNode *) malloc(size); 			pNew->data = data; 			pNew->next = NULL; 			if (head==NULL) 			{ 				head = pNew; 			} 			else 			{ 				tail->next = pNew; 			} 			tail = pNew;	 			 			// 删除L链表的奇数 			ptr1->next = ptr2->next; 			free(ptr2); 		} 		else 		{ 			ptr1 = ptr2; 		} 		ptr2 = ptr1->next;	 	}	 	  	return head; } 

今天 10:08:22 回复(1)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 奇数值结点链表: 输入若干个正整数(输入-1为结束标志) 建立一个单向链表,头指针为L,将链表L 中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息。试编写相应程序。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情