Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by kloser ( 16 years ago )
/* Описать функцию, которая удаляет из списка все вхождения элемента Е,
значение которого введено с клавиатуры */
#include "stdafx.h"
#include "stdlib.h"
#include "time.h"

typedef struct LIST
{
    int Object;
    struct LIST *Next;
} LIST;

int LAdd(LIST **Item, int Object)       
{
    LIST *NewItem;
    int Result = 1;

if(Item == NULL) {
printf("Error argument function LAdd\n");          
        exit(1);
    }
    NewItem = new LIST;
    if(NewItem != NULL) 
    {
        NewItem->Object = Object;
        if(NULL == *Item) 
        {
            NewItem->Next = NULL;
            *Item = NewItem;
        }
        else         {
            NewItem->Next = (*Item)->Next;
            (*Item)->Next = NewItem;        
        }
    }
    else
    {
        Result = 0;
    }

    return Result;
}

int LAppend(LIST **Item, int Object)  {
    int Result = 1;
    LIST *EndSeeker;

    if(Item == NULL) {
        printf("Error argument function LAppend\n");
        exit(1);
    }

    if (NULL == *Item)
    {
        Result = LAdd(Item, Object);
    }
    else
    {
        EndSeeker = *Item;
        while(EndSeeker->Next != NULL)
        {
            EndSeeker = EndSeeker->Next;
        }
        Result = LAdd(&EndSeeker;, Object);
    }

    return Result;
}

LIST *LDeleteThis(LIST *Item)          
{
    LIST *NextNode = NULL;

    if(Item != NULL)
    {
        NextNode = Item->Next;
        delete Item;
    }

    return NextNode;
}

void LDeleteNext(LIST *Item)   
{
    if(Item != NULL && Item->Next != NULL)
    {
        Item->Next = LDeleteThis(Item->Next);
    }
}

void LDelIt(LIST **Item, int Object)
{

    if(*Item!=NULL)
    {
        LIST *p = NULL;
           
        p=*Item;
    
   while(p->Next!= NULL)
   {
    if((*Item)->Object==Object)
    {
     (*Item)=(*Item)->Next;
    }
    else
    if(p->Next->Object == Object)
    {
     LDeleteNext(p);
    }
    else
    {
     p = p->Next;
    }
   }
 }
    else
    {
        printf("\nPeredan pustoi spisok!\n");
        exit(1);
    }
    
}

int _tmain(int argc, _TCHAR* argv[])
{
    LIST *List = NULL, *p;
    int Length = 0;
    srand(unsigned(time(NULL)));
    for(Length = 1; Length < 16; Length++){
        LAppend(&List;, rand()%5); 

    }
    p = List;

    while(p != NULL)
    {
        printf("%d ", p->Object);
        p = p->Next;
    }

    //List = NULL; 
    int Object = 0;
    printf("\n");
    printf("Vvedite Object:");
    scanf("%d",&Object;);
    LDelIt(&List;,Object);
    
    p = List;
    while(p != NULL)
    {
        printf("%d ", p->Object);
        p = p->Next;
    }
    printf("\n");

    return 0;
}

 

Revise this Paste

Your Name: Code Language: