Ðåôåðàòû. Ñèíòàêñè÷åñêèé àíàëèç ÿçûêà ÍÎÐÌÀ. Ðàçáîð îïèñàíèÿ

                Íèæå ïðèâåäåíû àëãîðèòì â âèäå áëîê ñõåìû è ñàìà ôóíêöèÿ.

 

#include<stdio.h>      /*ïîäêëþ÷åíèå ôàéëà stdio.h*/

#include<alloc.h>      /* ïîäêëþ÷åíèå ôàéëà alloc.h */

#include<process.h>   /* ïîäêëþ÷åíèå ôàéëà sprocess.h */

 

struct spis                           /*îáúÿâëåíèå ñòðóêòóðû ñïèñêà, êàæäûé ýëåìåíò */

                { int p1,p2;               /*êîòîðîãî èìååò äâà ïîëÿ òèïà öåëîå, (ð1-íîìåð*/

                struct spis *next;} rec1;/*òàáëèöû, ð2-íîìåð â òàáëèöå) è ïîëå-óêàçàòåëü*/

                                       /*íà ñëåäóþùèé ýëåìåíò ñïèñêà*/

struct spspis                        /* îáúÿâëåíèå ñòðóêòóðû ñïèñêà ñïèñêîâ, êàæäûé */

                {int p1,p2;               /*ýëåìåíò êîòîðîãî èìååò äâà ïîëÿ òèïà öåëîå,*/

                                      ð1-íîìåð òàáëèöû,ð2- íîìåð â òàáëèöå*/

                struct spspis *link;    /* óêàçàòåëü íà ñëåäóþùèé ýëåìåíò ñïèñêà ñïèñêîâ*/

                struct spis *next;} rec2;/*óêàçàòåëü íà ñòðóêòóðó ñïèñîê*/

struct spis *f,*q,*r;              /* óêàçàòåëü íà ñòðóêòóðó ñïèñîê */

struct spspis *t1,*t;             /* óêàçàòåëü íà ñòðóêòóðó ñïèñîê ñïèñêîâ*/

 

struct spspis *tochka(p)   /*îáúÿâëåíèå ôóíêöèè, âîçðàùàþùåé óêàçàòåëü íà                                                                    ñïèñîê ñïèñêîâ*/

struct spis *p;          /*àðãóìåíòîì ôóíêöèè ÿâëÿåòñÿ óêàçàòåëü íà ñïèñîê*/

{

f=p;    /*ïðñâàèâàíèå ðàáð÷åé ïåðåìåííîé çíà÷åíèÿ àðãóìåíòà ôóíêöèè*/

t=malloc(sizeof( rec2));/*ñîçäàíèå 1-îãî ýëåìåíòà ñïèñêà ñïèñêîâ*/

t1=t;  /* ïðñâàèâàíèå ðàáî÷åé ïåðåìåííîé óêàçàòåëÿ íà ñïèñîê ñïèñêîâ*/

while(f!=NULL) /*òåëî äàííîãî îïåðàòîðà áóäåò âûïîëíÿòüñÿ äî òåõ ïîð, ïîêà íå                               äîñòîãíåì êîíöà ñïèñêà ëåêñåì*/

{              t1->p1=f->p1;/*ïðèñâàèâàíèå çíà÷åíèé ïîëÿì ýëåìåíòà ñïèñêà ñïèñêîâ*/

                t1->p2=f->p2;

                f=f->next;

                if (f!=NULL)

                {  t1->next=malloc(sizeof(rec1));/*ñîçäàíèå 1-îãî ýëåìåíòà ñïèñêà â ñïèñêå                                                                                                ñïèñêîâ*/

                      q=t1->next;/* ïðèñâàèâàíèå ðàáî÷åé            ïåðåìåííîé óêàçàòåëÿ íà                                                       ýëåìåíò ñïèñêà*/

                      do  /*ñîçäàíèå ñàìîãî ñïèñêà ëåêñåì â ñïèñêå ñïèñêîâ*/

                      {

                                q->p1=f->p1;/*ïðèñâàèâàíèå çíà÷åíèé ïîëÿì ýëåìåíòà ñïèñêà*/

                                q->p2=f->p2;

                                if ((q->p1!=1) && (q->p2!=1))/*åñëè äàííàÿ ëåêñåìà íå ÿâëÿåòñÿ                                                                                           òî÷êîé*/

                                { q->next=malloc(sizeof(rec1));//*òî ñîçäàåì íîâûé ýëåìåíò ñïèñêà */

                                q=q->next;

                                }

                                else { t1->link=malloc(sizeof(rec2));/*èíà÷å, ñîçäàåì íîâûé ýëåìåíò                                                                                                          ñïèñêà ñïèñêîâ*/

                                    t1=t1->link;

                                };

                f=f->next;

                }

                while(((q->p1!=1) && (q->p2!=1)) || (f!=NULL)) ;/*òåëî äàííîãî îïåðàòîðà âûïîëäíÿåòñÿ äî òåõ ïîð,ïîêà ëèáî íå áóäåò ïðî÷èòàíà òî÷êà, ëèáî íå áóäåò äîñòèãíóò êîíåö ñïèñêà ëåêñåì,íà êîòîðûé óêàçûâàåò àðãóìåíò ôóíêöèè*/

Ñòðàíèöû: 1, 2, 3, 4, 5, 6, 7, 8, 9



2012 © Âñå ïðàâà çàùèùåíû
Ïðè èñïîëüçîâàíèè ìàòåðèàëîâ àêòèâíàÿ ññûëêà íà èñòî÷íèê îáÿçàòåëüíà.