美文网首页散文简友广场
数据结构第五周作业(广义表的深度、长度、存储结构)

数据结构第五周作业(广义表的深度、长度、存储结构)

作者: Cache_wood | 来源:发表于2021-04-08 08:13 被阅读0次

1.

请写出下列广义表的深度和长度。

(1)A = ()\\ (2)B = ( a )\\ (3)C = ( a, b, C)\\ (4)D = ( a, (A), (a, (b, (c, C))), d )\\ (5)E = ( a, ( b, c ), ( d, ( e ), ( f, ( g ))))

广义表的长度就是广义表中第一层的元素个数。原子数据和子表都算作一个元素。

广义表的深度就是广义表中最大的嵌套次数,是广义表中所含括号的重数。是所有子表的最大深度加1

(1)长度为0,深度为1.
(2)长度为1,深度为1.
(3)长度为3,深度为1.
(4)长度为4,深度为4.
(5)长度为3,深度为4.

2.

试画出上述广义表的存储结构示意图。

3.

编写一个算法,计算如下形式广义表的长度:
A = ( a, ( b, c), d, ((e, f, ( g, h)), i ) )

【注意】为简化操作,输入只包括字母、数字和“(”、“)”、“ ,”和空格,且任意多的空格不影响广义表的长度。

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

struct Lists
{ int Flag;
union 
  {char Data;
   struct Lists *List;
  } Info; 
  struct Lists *Link;
};

void Setuplists(struct Lists **H, char *s)
{   struct Lists *p, *x;        struct Lists *(S1[10]);   //指针栈
    int top1 = 0, i=0;      char c;
    (*H) = (struct Lists *)malloc(sizeof(struct Lists));
    (*H)->Flag = 1;  (*H)->Info.List = 0;  (*H)->Link = 0;
    p=(*H);
    while (s[i]!='\0')
    { c = s[i++]; 
    switch (c) { 
    case '(' : x = (struct Lists *)malloc(sizeof(struct Lists));
        x->Flag = 0;  x->Info.List = 0;  x->Link = 0;
        p->Flag = 1; p->Info.List = x;
        S1[++top1] = p;  p=x;  break; 
    case ',':   x = (struct Lists *)malloc(sizeof(struct Lists));
        x->Flag = 0;  x->Info.List = 0;  x->Link = 0;
        p->Link = x;  p = x;  break;
    case ' ':  break;
    case ')':  p->Link = 0;  p=S1[top1--]; break;
    default : p->Flag = 0; p->Info.Data = c; p->Link = 0;
    }  }    }

void Printlists(struct Lists *H)
{   struct Lists *p;        
       struct Lists *(S1[10]);
    int top1 = 0;
    p = H;
    while (p!=0 || top1!=0)
    {    while (p!=0)
         {  if (p->Flag==1)   // 子表,进入下一层 //
                     { S1[++top1] = p; p=p->Info.List; printf("("); }
           else { printf("%c",p->Info.Data); p=p->Link;   // 原子元素
                        if (p!=0) printf(","); }
          } 
             printf(")"); // 一个子表遍历结束 //
             p = S1[top1--];     p = p->Link;     // 返回上一层,转后继 //
             if (p!=0) printf(","); 
    }
}

int Depthlists(struct Lists *H)
{ int dep=0, Maxdep=0, top1 = 0;
   struct Lists *(S1[10]), *p;
   p = H;
   while (p!=0 || top1!=0)
   {   while (p!=0)
       {  if (p->Flag==1) 
              { S1[++top1] = p; p=p->Info.List; dep++; }
           else p=p->Link; 
       }
       if (dep > Maxdep) Maxdep = dep;     
       p = S1[top1--];  dep--;  p = p->Link;  
   }
    return(Maxdep);
}

int Lenthlists(struct Lists *H)  // 长度 //
{  int n=0;
    struct Lists *p;
    p = H->Info.List;
    while (p!=0) { n++;  p = p->Link;  }
    return(n);
}

int main(){
    struct Lists *H;
    char a[100];
    char *s = gets(a);

    Setuplists(&H, s);
    Printlists(H);
    printf("\nlength  = %d",Lenthlists(H));

    return 0;
}
#include <stdio.h>

int main(){
    char a[100];
    char *s = gets(a);
    int max = 0,n = 0;

    while(*s){
        if(*s=='('){
            n++;
        }else if(*s==')'){
            n--;
        }
        if(max < n) max = n;
        s++;
    }
    printf("length  = %d",max);

    return 0;
}

相关文章

  • 数据结构第五周作业(广义表的深度、长度、存储结构)

    1. 请写出下列广义表的深度和长度。 广义表的长度就是广义表中第一层的元素个数。原子数据和子表都算作一个元素。 广...

  • 数据结构820知识点总结

    第一章:绪论 数据结构包含:逻辑结构,存储结构,对数据的运算逻辑结构:线性结构(线性表,栈,队列,串,数组,广义表...

  • #数据结构#—广义表

    广义表 广义表,又称列表,也是一种线性存储结构。同数组类似,广义表中既可以存储不可再分的元素,也可以存储广义表,记...

  • 广义表

    广义表广义表的定义广义表的存储结构广义表的M元多项式广义表的递归算法 一、广义表的定义:广义表(Lists,又称列...

  • Java造轮子-数据结构-线性表

    数据结构-线性表 @(数据结构) 线性表是数据结构中的逻辑结构。可以存储在数组上,也可以存储在链表上。 顺序表(数...

  • Redis源码分析(三)——Redis数据结构-字典

    1. 数据结构 1.1 哈希表 table:存储节点的数组 size:table数组的长度-sizemask:si...

  • 广义表

    广义表的定义 广义表是线性表的推广,是一种非线性的数据结构,也有人称其为列表。广义表的实现主要应用递归,通过广义表...

  • 数据结构与算法之美1--如何学

    数据结构与算法抓住重点,系统高效地学习数据结构与算法? 概念 广义上讲:数据结构指的是“一组数据的存储结构”,算法...

  • 数据结构之线性表的链式存储结构

    之前写了线性表的顺序存储结构和有序线性表的顺序存储结构,今天接着写线性表的链式存储结构 数据结构之线性表的顺序存储...

  • 第1课:为什么要学习数据结构与算法?如何学习?

    1、什么是数据结构 广义上讲:数据结构就是一组数据的存储结构。狭义上讲:队列、栈、堆、树 等常用的数据结构。 2、...

网友评论

    本文标题:数据结构第五周作业(广义表的深度、长度、存储结构)

    本文链接:https://www.haomeiwen.com/subject/zcqckltx.html