数据结构:交换单链表中的任意两元素--C实现
2014-04-07 17:31
183 查看
# include <stdio.h> # include <stdlib.h> struct node { int data ; node * next; }; //前驱节点 node* FindPre( node* head , node* p ) { node *q = head while( q ) { if( q->next == p ) { return p; } else { q = q -> next; } } return NULL; } //节点交换 bool SwapNode( node* head , node* p , node* q ) { bool flag = false; if( head == NULL || p == NULL || q == NULL ) { printf("invalid parameter: NULL\n"); } if( p->data == q->data ) { flag = true; } if( p->next == q ) { node* pre = FindPre( head , p ); pre->next = q; p->next = q->next; q->next = p; flag = true; } else if( q->next = p ) { node* pre = FindPre( head , q ); pre->next = p; q->next = p->next; p->next = q; flag = true; } else { node* pre_p = FindPre( head , p ); node* pre_q = FindPre( head , q ); node* aft_p = p->next; p->next = q->next; q->next = aft_p; pre_p->next = q; pre_q->next = p; falg = true; } return flag; }
相关文章推荐
- 程序员面试题目总结--链表(7)【实现单链表交换任意两个元素(不包括表头)】
- 数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- 如何实现单链表交换任意两个元素(不包括头结点)
- 数据结构----实现对2个链表La,Lb有序合并,对相同的元素进行删除,
- 数据结构-链表实现删除全部特定元素x
- 7单链表交换任意两个元素(不包括表头)
- 数据结构与算法:单链表(利用万能指针实现对任意类型数据进行操作)
- 数据结构---无重复元素链表的实现
- 如何实现单链表任意两个元素交换(不包括表头)
- 单链表交换任意两个元素(不包括表头)
- 【学习点滴-数据结构-单链表】交换单链表中任意两个元素
- 建立单链表并交换表中任意两个元素
- 交换单链表中任意两个元素(不包括表头)
- 数据结构---单链表c实现
- C++实现数据结构中的单链表
- 数据结构学习-线性表-链表的代码实现
- 数据结构之链表(C实现)
- 分别用数组和链表实现集合数据结构
- 数据结构C++模板实现之----------------单向链表