阅读以下说明,回答问题1~5,将解答填入对应的解答栏内。 [说明] 若s和t是用单链表存储的两个串,设计一个函数将s串中首次与串t匹配的字串逆置。 linkstring * invert - substring ( s, t) linkstr

admin2009-02-15  40

问题 阅读以下说明,回答问题1~5,将解答填入对应的解答栏内。
[说明] 若s和t是用单链表存储的两个串,设计一个函数将s串中首次与串t匹配的字串逆置。
   linkstring * invert - substring ( s, t)
   linkstring * s, * t;
   {
       linkstring *prior, *p, *t1, *r, *q, *u;
       prior =s;
       p=s;
       t1 =t;
       if (  (1)  ) printf ( "error\n") ;
       else
       {
           while { p ! = NULL && t1! = NULL)
           {
               if ( p- >data = = t1 - >data)
               {  
                    p = p- >link;
                    t1 = t1- >link;
               }
               else
               {
                     (2)  
                    p = prior - > link;
               }
            t1 = t- >link;
            }
            if ( t1 !  : NULL) printf ("cannot find");
            else
               {
                 (3)  
                 r = q- >link;
                 q- >link = p;
                 while (r !  = p)
                 {
                      u = r- >link;
                     (4)  
                       q=r;
                       r = u;
                  }  
                     (5)  
           }
       }
   }

选项

答案(1) p=NULL||t1=NULL (2) prior=prior->link (3) q=prior->link; (4) r->link=q; (5) prior->link=q;

解析 设t和s是用带头结点的单链表表示的,首先在s串中查找首次与串t匹配的子串,若未找到,显示相应信息并返回;否则将该子中逆置,先将子串的第一个结点链接到p的前面,再将该子串的第二个结点链接到前面移动的第二个结点的前面,如此下去,便逆置了该于串。
转载请注明原文地址:https://jikaoti.com/ti/pwi7FFFM
0

最新回复(0)