本文共 1678 字,大约阅读时间需要 5 分钟。
#include#include #include #define OK 1#define ERROR 0#define OVERFLOW -2typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode, *LinkList;void CreateList_L(LinkList &L, int n){ int i; LinkList p,q; L = (LinkList) malloc (sizeof(LNode)); if (!L) { exit(OVERFLOW); } p = L; for (i=0; i data = i+1; p->next = q; p = q; } p->next = NULL;}void Display(LinkList L){ LinkList p = L->next; while (p != NULL) { printf("%d ",p->data); p = p->next; } printf("\n");}int Listlength(LinkList L){ LinkList p = L->next; int n = 0; while (p!=NULL) { n++; p = p->next; } return n;}int ListInsert_L(LinkList &L, int i, ElemType e){ LinkList s,p = L; int j = 0; while (p && j next; ++j; } if (!p || j>i-1) { return ERROR; } s = (LinkList) malloc (sizeof(LNode)); s->data = e; s->next = p->next; p->next = s; return OK;}int ListDelete_L(LinkList &L, int i, ElemType &e){ LinkList p = L,q; int j = 0; while (p->next && j next; ++j; } if (!(p->next) || j>i-1) { return ERROR; } q = p->next; p->next = q->next ; e = q->data ; free(q); return OK;}int GetElem_L(LinkList L, int i, ElemType &e){ LinkList p = L->next; int j = 1; while (p && j next; j++; } if (!p || j>i) { return ERROR; } e = p->data; return OK;}void GetPowerset(int i, LinkList A,LinkList &B){ int x,k; if (i>Listlength(A)) { Display(B); } else { GetElem_L(A,i,x); k = Listlength(B); ListInsert_L(B,k+1,x); GetPowerset(i+1,A,B); ListDelete_L(B,k+1,x); GetPowerset(i+1,A,B); }}int main(){ int i = 1; LinkList A,B; B = (LinkList) malloc (sizeof(LNode)); B->next = NULL; CreateList_L(A,8); GetPowerset(i,A,B); return 0;}
转载地址:http://jqmbn.baihongyu.com/