C语言实现:将链表 A 分解成两个链表

问题描述

将链表 A 分解成两个链表,A 中序号为奇数的元素的留再链表 A 中,序号为偶数的元素放入链表 B 中、并分别headl、 head2 头指针指向 A、B 链表。

代码

下面展示一些 代码

//定义链表的数据元素类型 
typedef struct LNode{
	int data;  //数据域 
	struct LNode *next; //指针域 
}LNode,*LinkList;

LNode *Depart_A_B(LinkList La){
	LNode *head1,*head2;
	LinkList=Lb;
	Lb=(LinkList)malloc(sizeof(LNode));
	head1=La;
	head2=Lb;
	LNode *p=La->next;
	La->next=NULL;
	LNode *ra,*rb;
	ra=La;
	rb=Lb;
	int k=1;
	while(p){
		if(k%2!=0){
			ra->next=p;
			ra=ra->next;
			p=p->next;
			k++;
		}
		else{
			rb->next=p;
			rb=rb->next;
			p=p->next;
			k++
		}	
	}
	ra->next=NULL;
	rb->next=NULL;
	return Lb;
} 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下面是一个用C语言将一个链表分解成按顺序奇偶两个链表的代码示例: ```c #include <stdio.h> #include <stdlib.h> // 定义链表节点 struct ListNode { int val; struct ListNode *next; }; struct ListNode* oddEvenList(struct ListNode* head) { if (!head) return NULL; struct ListNode *odd = head, *even = head->next, *even_head = even; while (even && even->next) { odd = odd->next = even->next; even = even->next = odd->next; } odd->next = even_head; return head; } // 创建链表 struct ListNode* createList(int* nums, int numsSize) { struct ListNode *head = NULL, *tail = NULL; for (int i = 0; i < numsSize; i++) { struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode)); node->val = nums[i]; node->next = NULL; if (!head) { head = tail = node; } else { tail->next = node; tail = node; } } return head; } // 打印链表 void printList(struct ListNode* head) { while (head) { printf("%d ", head->val); head = head->next; } printf("\n"); } int main() { int nums[] = {1, 2, 3, 4, 5}; int numsSize = sizeof(nums) / sizeof(nums[0]); struct ListNode* head = createList(nums, numsSize); printf("原链表:"); printList(head); head = oddEvenList(head); printf("奇偶链表:"); printList(head); return 0; } ``` 该代码中,我们首先定义了一个链表节点结构体 `struct ListNode`,然后实现了一个函数 `oddEvenList`,用于将一个链表分解成按顺序奇偶两个链表。具体实现上,我们使用了两个指针 odd 和 even,分别表示奇数和偶数节点的链表头。然后我们遍历链表,将奇数节点和偶数节点分别连接到 odd 和 even 链表上,最后将 odd 链表的尾部连接到 even 链表的头部即可。 我们还实现了一个 `createList` 函数用于创建链表,以及一个 `printList` 函数用于打印链表。最后在 `main` 函数中,我们创建了一个示例链表,然后调用 `oddEvenList` 函数将其分解为奇偶链表,并打印输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值