静态实现广义表

已知广义表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 }

 

代码实现:

 

posted @ 2019-01-02 19:28  里昂静  阅读(200)  评论(0编辑  收藏  举报