一、集合操作 用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。

#include

using namespace std;

typedef struct Element{

Element* next;

int value;

}Element,*Link,*Position;

class SortedUnion

{

private:

Link sorted_link;

public :

SortedUnion()

{

//创建单链表的头节点

sorted_link = (Link)malloc(sizeof(Element));

sorted_link->next = NULL;

}

void addValue(int value)

{

Position pos = insertPosition(value);

if(pos!=NULL)

{

Link tmp = (Link)malloc(sizeof(Element));

tmp->value = value;

tmp->next = pos->next;

pos->next = tmp;

}

}

void deleteValue(int value)

{

Position pos,pre=sorted_link;

for(pos=sorted_link->next; pos; pos=pos->next)

{

if(pos->value == value)

{

pre->next = pos->next;

free(pos);

break;

}

pre = pos;

}

}

Position insertPosition(int value)

{

Position pos;

for(pos = sorted_link; pos->next; pos=pos->next)

{

if(pos->next->value > value)

break;

if(pos->next->value == value)

return NULL;

}

return pos;

}

void print()

{

Link ptr;

for(ptr=sorted_link; ptr->next; ptr=ptr->next)

cout value << " ";

}

friend SortedUnion Intersection(SortedUnion A, SortedUnion B)

{

SortedUnion C;

Position posA = A.sorted_link->next, posB = B.sorted_link->next;

while(posA && posB)

{

if(posA->value value)

posA = posA->next;

else if(posB->value value)

posB = posB->next;

else{

C.addValue(posA->value);

posA = posA->next;

posB = posB->next;

}

}

return C;

}

};

int main()

{

SortedUnion u1,u2,u3;

u1.addValue(2);

u1.addValue(3);

u1.addValue(1);

u1.addValue(4);

u2.addValue(1);

u2.addValue(2);

u3 = Intersection(u1, u2);

u3.print();

}

二、集合操作 用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。

#incluam> using n; typedef struct Elem* next; int va,*Link,*PositdUnion { prk sorted_lic : SortedUnion() { //创建单链表的头节点 sorted_link = (Link)malloc(); sorted_link->next = NULL; } void addValue(isition pos = ition(value); ink tmp = (Link)malloc(sizeof(Element)); tmp->value = value; tmp->next = pos->next; pos->next = tmp; } } void delete value) { Position pos,pre=sorted_link; 集合操作用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。
for(pos=sorted_link->next; ps->next) { if(pos->value == value) { pre->next = pos->nexos); break; } pre = pos; } } Position insertPosition(int valion pos; for(pos = sorted_link; pos->ns->next) { if(pos->next->value > value) break; if(>value == value) return NULL; } return pos; } v { Link ptr; for(ptr=sorted_xt; ptr=ptrtr->next->value next; while(posA && posB) { if(posA->value value) posA = posA->next; else if(posB->value vB->next; else{ C.addValue(posA->value); posA = posA->next; posB = posB->next; } } return C; } }; int main() { SortedUnion u1,u2,u3; u1.addValue(2); u1.addValue(3); u1.addValue(1); u1.addValue(4); u2.addValue(1); u2.addValue(2); u3 = Intersection(u1, u2); u3.print(); }

三、用单链表实现集合的并,交,差运算....急啊~~3号之前要

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。