第六章(8)求集合的幂集

来源:互联网 发布:python是用来做什么的 编辑:程序博客网 时间:2024/05/22 10:56

以前落下的习题,现在补上!

#include<stdio.h>
#include<stdlib.h>

#define LIST_INIT_SIZE  100   //线性表存储空间的初始分配量
#define LISTADD 10   //线性表存储空间的分配增量
#define TRUE 1
#define FALSE 0
#define ERROR -1

typedef int ElemType;
typedef struct
{
 ElemType *elem;   //存储空间基址
 int length;    //当前长度
 int listsize;   //当前分配的容量
}SqList ,  *Sqlist;   //注意两者细微差别

void InitList_Sq(Sqlist L) ;
int ListLength(SqList L) ;
int ListEmpty(SqList L) ;
void ListInsert(Sqlist L , int i , ElemType e) ;
ElemType GetElem(SqList L, int i, ElemType *e) ;
ElemType ListDelete(Sqlist L,int i,ElemType *e) ;
int LocateElem(SqList L,ElemType e) ;

void Output( SqList B ) ;
void GetPowerSet( int i , SqList A , SqList *B ) ;
//void GetPowerSet( int i , SqList A , Sqlist B ) ;

static int sign = 0 ;

 

#include "head.h"

void Output( SqList B )
{
 int i ;

 ++ sign ;
 printf( "(%d):" , sign ) ;
 for( i = 0 ; i < B.length ; ++ i )
 {
  printf( "%d " , B.elem[ i ] ) ;
 }
 if( !B.length )
  printf( "空集" ) ;
 printf( "\n" ) ;
}

void GetPowerSet( int i , SqList A , SqList *B )
{ //线性表A表示集合A,线性B表示幂集p(A)的一个元素
 ElemType x ;
 int k ;

 if( i > ListLength( A ) )
  Output( *B ) ;   //输出当前B值,即P(A)的一个元素
 else
 {
  GetElem( A , i , &x ) ;
  k = ListLength( *B ) ;

  ListInsert( B , k + 1 , x ) ; GetPowerSet( i + 1 , A , B ) ;
  ListDelete( B , k + 1 , &x ) ; GetPowerSet( i + 1 , A , B ) ;
 }
}

int main( )
{
 SqList A , B ;
 InitList_Sq( &A ) ;
 InitList_Sq( &B ) ;

 ListInsert( &A , 1 , 1 ) ;
 ListInsert( &A , 2 , 2 ) ;
 ListInsert( &A , 3 , 3 ) ;

 GetPowerSet( 1 , A , &B ) ;

 return 0 ;
}


0 0
原创粉丝点击