静态实现广义表
已知广义表A=(a,(b,c)),表结点的结构和原子结点的结构如下图所示,将其表示出来。
1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct Node 4 { 5 int tag; 6 union myUnion 7 { 8 char atom; 9 struct{struct Node *hp,*tp;}ptr; 10 }u; 11 }linkNode; 12 int main() 13 { 14 linkNode *l=(linkNode *)malloc(sizeof(linkNode)); 15 linkNode *nodeA=(linkNode *)malloc(sizeof(linkNode)); 16 linkNode *nodeB=(linkNode *)malloc(sizeof(linkNode)); 17 linkNode *nodeC=(linkNode *)malloc(sizeof(linkNode)); 18 nodeA->tag=0; 19 nodeA->u.atom='a'; 20 nodeB->tag=0; 21 nodeB->u.atom='b'; 22 nodeC->tag=0; 23 nodeC->u.atom='c'; 24 l->tag=1; 25 l->u.ptr.hp=nodeA; 26 int count=0; 27 linkNode* temp[3]; 28 while(count<3) 29 { 30 temp[count]=(linkNode *)malloc(sizeof(linkNode)); 31 count++; 32 } 33 l->u.ptr.tp=temp[0]; 34 temp[0]->tag=1; 35 temp[0]->u.ptr.tp=NULL; 36 temp[0]->u.ptr.hp=temp[1]; 37 temp[1]->tag=1; 38 temp[1]->u.ptr.hp=nodeB; 39 temp[1]->u.ptr.tp=temp[2]; 40 temp[2]->tag=1; 41 temp[2]->u.ptr.hp=nodeC; 42 temp[2]->u.ptr.tp=NULL; 43 printf("%c ",nodeA->u.atom); 44 return 0; 45 46 }
代码实现: