两个双向链表删除相同元素

原创 2011年08月10日 10:26:18

参考:http://hi.baidu.com/beyond748/blog/item/cdeefb1ce3638a8d87d6b6c7.html/cmtid/6145d62fdd4a92361f3089e8


#include "stdafx.h"
//#include "list.h"
#include <iostream>
#include <vector>
using namespace std;

typedef struct node{
int data;
struct node *front, *next;
}node, *linkHead;
//记录删除的元素
int delCnt=0;
int delTmp[16];

void creatList(linkHead *head, int ary[], int n){
int c=0;
linkHead p;
// head;
linkHead h= (linkHead)malloc(sizeof(node));
h->next=NULL;
h->front=NULL;
h->data=n;
*head = h;


while(c<n){
p = (linkHead)malloc(sizeof(node));
h->next = p;
p->front= h;
p->data = ary[c++];
h = p;
p->next = NULL;
}
}

void printList(const linkHead head)
{
linkHead p=head->next;
while(p){
printf("%d\n", p->data);
p = p->next;
}
}

int delNode(linkHead *head, int val, int save)
{
linkHead pNode; 
linkHead p = (*head)->next;
while (p)
{
if (p->data==val) {
if (save==1) delTmp[delCnt++]=p->data;
if (p->next){
pNode = p->next;
p->front->next=p->next;
p->next->front=p->front;
free(p), p=NULL;
p = pNode;
}else{
p->front->next=NULL;
free(p), p=NULL;
}

}else
p = p->next;
}


return 1;
}

void delSame(linkHead *head1,linkHead *head2){
linkHead p = (*head1)->next;
while(p){
delNode(head2, p->data, 1);
p=p->next;
}

for(int i=0; i<delCnt; i++){
delNode(head1, delTmp[i], 0);
}
}

void main()
{
int aa[]={1,2,3,4,5,6};
int bb[]={3,4,5,6,7,8,9,10,11,4,2};
linkHead list1,list2;
creatList(&list1,aa, sizeof(aa)/sizeof(aa[0]));        
creatList(&list2,bb, sizeof(bb)/sizeof(bb[0]));
//delSame(&list2,&list1);
delSame(&list1,&list2);

printf("\n");
printList(list1);
printf("\n");
printList(list2);
}

STL双向链表之删除重复元素(list)

数据结构上机测试2-2:单链表操作B Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 按照数据输入的相反顺序...
  • qq_16255321
  • qq_16255321
  • 2014-06-19 17:02:14
  • 1053

删除两个双向链表值相同的结点

有双向循环链表结点定义为:     struct node     {           int data;          struct node *front,*next;     ...
  • u012308776
  • u012308776
  • 2014-09-22 12:48:36
  • 721

中兴通讯2012笔试题删除双向循环链表中相同的数值

双向循环链表pHeadA ,pHeadB, 例如 pHeadA 数据为 1,2,3,4,5,7 pHeadB数据为 1,2,6,2,1,7,3 删除相同数值后为  pHeadA 4,5  pHea...
  • dahai_881222
  • dahai_881222
  • 2012-08-31 17:32:52
  • 1991

两个双向链表删除相同元素

参考:http://hi.baidu.com/beyond748/blog/item/cdeefb1ce3638a8d87d6b6c7.html/cmtid/6145d62fdd4a92361f308...
  • notton
  • notton
  • 2011-08-10 10:26:18
  • 743

删除两个双向链表中相同元素的所有节点

题目: 两个双链表1,2分别以头节点数据域全为F开头,且两个链表中分别有多个元素可能相同。 设计函数intDeleteSameNodes(Node *pHeadA, Node *pHeadB); ...
  • xiaofei0859
  • xiaofei0859
  • 2012-10-27 23:12:46
  • 911

双向链表元素的删除

 struct Node { int Data; struct Node* prior; struct Node* next;};/** * @brief 该函数...
  • rabbit729
  • rabbit729
  • 2009-03-09 21:11:00
  • 5924

数据结构——12 删除两个双向链表中相同的节点

双向链表——删除两个双向链表中相同的节点。
  • u010757264
  • u010757264
  • 2016-08-18 17:11:54
  • 417

双链表插入 删除详解

节点结构: struct both_node { int key; struct both_node *prev; struct both_node *next; both_node(int...
  • zhou753099943
  • zhou753099943
  • 2016-06-07 18:09:49
  • 1431

如何将二个list集合当中相同的元素进行删除。

如果想过滤掉重复元素,set集合有这个特点,可以直接过滤掉重复的元素,而list集合可以存储相同的元素。...
  • Lover_CL
  • Lover_CL
  • 2016-09-01 13:43:34
  • 1966

双向链表的建立,插入,删除,寻找元素等算法

  • 2010年07月02日 00:21
  • 3KB
  • 下载
收藏助手
不良信息举报
您举报文章:两个双向链表删除相同元素
举报原因:
原因补充:

(最多只允许输入30个字)