3 回答

TA貢獻1900條經驗 獲得超5個贊
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
#define
ELEMTYPE
int
typedef
struct
set
{
ELEMTYPE
m;
struct
set
*next;
}*NODE;
NODE
InitSet()
{
NODE
head
=
(NODE)malloc(sizeof(set));
head->next
=
NULL;
return
head;
}
bool
Insert(NODE
head,
ELEMTYPE
e)
{
//
創建增序鏈表
NODE
p,q;
p
=
head;
q
=
(NODE)malloc(sizeof(set));
if(q
==
NULL)
return
false;
q->m
=
e;
if(p->next
==
NULL)
{
//
直接插在頭結點后
q->next
=
NULL;
p->next
=
q;
return
true;
}
while(p->next
!=
NULL)
{
if(p->next->m
==
e)
return
false;
if(p->next->m
>
e)
{
q->next
=
p->next;
p->next
=
q;
return
true;
}
p
=
p->next;
}
if(p->next
==
NULL)
{
//
插在鏈表尾部
p->next
=
q;
q->next
=
NULL;
}
return
true;
}
void
ShowSet(NODE
head)
{
NODE
p
=
head->next;
for(;p
!=
NULL;p
=
p->next)
printf("%d
",p->m);
printf("\n");
}
bool
InSet(NODE
head,
ELEMTYPE
e)
{
NODE
p
=
head->next;
for(;p;p
=
p->next)
if(p->m
==
e)
return
true;
return
false;
}
bool
IsEmpty(NODE
head)
{
return
(head->next
==
NULL);
}
int
SetLength(NODE
head)
{
int
n
=
0;
NODE
p
=
head->next;
for(;p;p
=
p->next)
++n;
return
n;
}
int
main()
{
NODE
set
=
InitSet();
int
i,n;
srand(time(NULL));
n
=
rand()%100
+
1;
for(i
=
0;
i
<
30;
++i)
Insert(set,rand()%60
+
1);
ShowSet(set);
printf("該集合共有%d個人元素。\n",SetLength(set));
if(InSet(set,n))
printf("%d在集合中。\n",n);
else
printf("%d不在集合中。\n",n);
return
0;
}

TA貢獻1864條經驗 獲得超6個贊
#include<stdio.h>
#include<malloc.h>
typedef
struct
Node
{
int
data;//數據域
struct
Node
*next;//指針域
}Node,*LinkList;
int
in_set(LinkList
*L,int
n);
int
main()
{
LinkList
L;
int
i=1;
L=(LinkList)malloc(sizeof(Node));
printf("請輸入集合整型元素(用空格隔開):\n");
do
{
scanf("%d",&L->data
);
L=(LinkList)realloc(L,sizeof(Node)*++i);
}while(getchar()!='\n');
if(in_set(&L,i))
printf("集合中存在0元素\n");
else
printf("集合中不存在0元素\n");
}
int
in_set(LinkList
*L,int
n)
{
int
i;
for(i=0;i<n;i++)
if((*L)->data==0)//如果存在0元素,返回1
return
1;
return
0;//如果這條語句能夠執行,說明不存在0元素
}
//程序我已經調試好了。集合元素你自己輸入,想輸入多少就輸入多少,只要你的內存夠大。輸入以回車鍵結束。

TA貢獻1856條經驗 獲得超17個贊
#include
#include
#include
#define
ELEMTYPE
int
typedef
struct
set
{
ELEMTYPE
m;
struct
set
*next;
}*NODE;
NODE
InitSet()
{
NODE
head
=
(NODE)malloc(sizeof(set));
head->next
=
NULL;
return
head;
}
bool
Insert(NODE
head,
ELEMTYPE
e)
{
//
創建增序鏈表
NODE
p,q;
p
=
head;
q
=
(NODE)malloc(sizeof(set));
if(q
==
NULL)
return
false;
q->m
=
e;
if(p->next
==
NULL)
{
//
直接插在頭結點后
q->next
=
NULL;
p->next
=
q;
return
true;
}
while(p->next
!=
NULL)
{
if(p->next->m
==
e)
return
false;
if(p->next->m
>
e)
{
q->next
=
p->next;
p->next
=
q;
return
true;
}
p
=
p->next;
}
if(p->next
==
NULL)
{
//
插在鏈表尾部
p->next
=
q;
q->next
=
NULL;
}
return
true;
}
void
ShowSet(NODE
head)
{
NODE
p
=
head->next;
for(;p
!=
NULL;p
=
p->next)
printf("%d
",p->m);
printf("\n");
}
bool
InSet(NODE
head,
ELEMTYPE
e)
{
NODE
p
=
head->next;
for(;p;p
=
p->next)
if(p->m
==
e)
return
true;
return
false;
}
bool
IsEmpty(NODE
head)
{
return
(head->next
==
NULL);
}
int
SetLength(NODE
head)
{
int
n
=
0;
NODE
p
=
head->next;
for(;p;p
=
p->next)
++n;
return
n;
}
int
main()
{
NODE
set
=
InitSet();
int
i,n;
srand(time(NULL));
n
=
rand()%100
+
1;
for(i
=
0;
i
<
30;
++i)
Insert(set,rand()%60
+
1);
ShowSet(set);
printf("該集合共有%d個人元素
添加回答
舉報