📄 orderset.h
字号:
#ifndef ORDERSET_H
#define ORDERSET_H
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "Ordlist.h"
typedef OrderedList OrderedSet;
void CreateSet(OrderedSet &T,char *s)
{unsigned int i;
LinkType p,q;
if (InitList(T))
for (i=0;i<strlen(s);i++)
{
if (islower(s[i]) && !LocateElem (T,s[i],p))
if (MakeNode(q,s[i])) InsertAfter(T,p,q);
}
}
void DestroySet (OrderedSet &T)
{ DestroyList (T);}
void Union ( OrderedSet &T, OrderedSet S1,OrderedSet S2)
{LinkType p1,p2;
char c1,c2;
if (InitList (T))
{p1=GetElemPos(S1,1); p2=GetElemPos(S2,1);
while (p1 && p2)
{c1=Elem (p1) ; c2=Elem(p2);
if (c1<=c2)
{Append (T,Copy(p1));
p1=SuccNode(p1);
if (c1==c2) p2=SuccNode(p2);
}
else {Append (T,Copy(p2)); p2=SuccNode(p2);}
}
while (p1) {Append (T,Copy(p1)); p1=SuccNode(p1);}
while (p2) {Append (T,Copy(p2)); p2=SuccNode(p2);}
}
}
void Intersection( OrderedSet &T ,OrderedSet S1,OrderedSet S2)
{ LinkType p1,p2;
char c1,c2;
if (!InitList (T)) T.head =NULL;
else {p1=GetElemPos(S1,1); p2=GetElemPos(S2,1);
while (p1 && p2)
{c1=Elem (p1); c2=Elem (p2);
if(c1<c2) p1=SuccNode(p1);
else {if (c1>c2) p2=SuccNode (p2);
else {Append (T,Copy(p1));
p1=SuccNode(p1);p2=SuccNode(p2);
}}}}}
void Difference (OrderedSet &T , OrderedSet S1, OrderedSet S2)
{ LinkType p1,p2;
char c1,c2;
if (!InitList (T)) T.head=NULL;
else {p1=GetElemPos(S1,1);p2=GetElemPos(S2,1);
while (p1&&p2)
{c1=Elem(p1);c2=Elem(p2);
if (c1<c2)
{Append (T,Copy(p1));p1=SuccNode(p1);}
else {if (c1>c2) p2=SuccNode(p2);
else {p1=SuccNode(p1);p2=SuccNode(p2);}}}
while (p1) {Append(T,Copy(p1));p1=SuccNode(p1);}}}
void WriteSetElem (LinkType p)
{printf (","); printf("%c",Elem(p));}
void PrintSet(OrderedSet T)
{LinkType p;
p=GetElemPos(T,1);
printf("[");
if (p) {printf("%c",Elem (p));p=SuccNode(p);}
ListTraverse(p,WriteSetElem);
printf("]");}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -