📄 set.c
字号:
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include "set.h"
symset uniteset(symset s1, symset s2)
{
symset s;
snode* p;
s = p = (snode*) malloc(sizeof(snode));
// added by yzhang 02-02-28
s1 = s1->next; s2 = s2->next;
// end add
while (s1 && s2)
{
p->next = (snode*) malloc(sizeof(snode));
p = p->next;
if (s1->elem < s2->elem)
{
p->elem = s1->elem;
s1 = s1->next;
}
else
{
p->elem = s2->elem;
s2 = s2->next;
}
}
if ( s2 ) s1 = s2; //added by yzhang 02-02-28
while (s1)
{
p->next = (snode*) malloc(sizeof(snode));
p = p->next;
p->elem = s1->elem;
s1 = s1->next;
}
/* deleted by yzhang 02-02-28
while (s2)
{
p->next = (snode*) malloc(sizeof(snode));
p = p->next;
p->elem = s2->elem;
s2 = s2->next;
}
*/
p->next = NULL;
return s;
} // uniteset
void setinsert(symset s, int elem)
{
snode* p = s;
snode* q;
while (p->next && p->next->elem < elem)
{
p = p->next;
}
q = (snode*) malloc(sizeof(snode));
q->elem = elem;
q->next = p->next;
p->next = q;
} // setinsert
symset createset(int elem, .../* SYM_NULL */)
{
va_list list;
symset s;
s = (snode*) malloc(sizeof(snode));
s->next = NULL;
va_start(list, elem);
while (elem)
{
setinsert(s, elem);
elem = va_arg(list, int);
}
va_end(list);
return s;
} // createset
void destroyset(symset s)
{
snode* p;
while (s)
{
p = s;
s = s->next;
free(p);
}
} // destroyset
int inset(int elem, symset s)
{
s = s->next;
while (s && s->elem < elem)
s = s->next;
if (s && s->elem == elem)
return 1;
else
return 0;
} // inset
//added by yzhang 02-02-28
void showset(symset s)
{
s = s->next;
while (s ){
printf("%d,", s->elem);
s = s->next;
}
printf("\n");
} // showset
// EOF set.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -