示例#1
0
文件: main.c 项目: Alecs94/DSA-lab
void DelCertainElement(int x)
{
    NODE* PrevNODE=NULL;//we need to memorize a previous element for deleting
    if(head!=NULL)
    {
        NODE* CurrNODE;
        CurrNODE=head;
        while (CurrNODE!=NULL)
        {
            if(CurrNODE->data==x)
            {
                if(CurrNODE==head)
                {
                    DelFirst();
                }
                else
                {
                    if(CurrNODE==tail)
                    {
                        DelLast();
                    }
                    else
                    {
                        PrevNODE->next=CurrNODE->next;
                    }
                }

            }
            PrevNODE=CurrNODE;
            CurrNODE=CurrNODE->next;
        }
    }
}
示例#2
0
文件: main.c 项目: Alecs94/DSA-lab
void DeleteCertainElement(int x)
{
    NODE *CurrNODE=head;
    if(head->data==x)
        DelFirst();
    else
    {
        if(tail->data==x)
        {
            DelLast();
        }
        else
        {
            while(CurrNODE!=NULL)
            {
                if(CurrNODE->data==x)
                {
                    CurrNODE->prev->next=CurrNODE->next;
                    CurrNODE->next->prev=CurrNODE->prev;
                }
                CurrNODE=CurrNODE->next;
            }
        }
    }
}
示例#3
0
void DelVLast(List *L,infotype *X) {
/* I.S. List tidak kosong */
/* F.S. Elemen sebelum dummy dihapus nilai info disimpan pada X */
/*dan alamat elemen terakhir sebelum dummy di-dealokasi */
	address P;
	DelLast(L,&P);
	(*X) = Info(P);
	Dealokasi(&P);
}
示例#4
0
文件: list.c 项目: rivasyafri/ADT
void DelVLast (List *L, infotype *X) {
     /* Kamus Lokal */
    address P;

    /* Algoritma */
    DelLast(L,P);
    (*X) = Info(P);
    Dealokasi(P);
}
void DelVLast(List *L, infotypeList *X)
/* I.S. list tidak kosong */
/* F.S. Elemen terakhir list dihapus: nilai info disimpan pada X */
/*      dan alamat elemen terakhir di-dealokasi */
{
    addressList P;
    DelLast(L, &P);
    *X = Info(P);
    Dealokasi(&P);
}
示例#6
0
文件: main.c 项目: Alecs94/DSA-lab
int main()
{
    FILE *pf_in=fopen("input.dat", "r");
    FILE *pf_out=fopen("output.dat", "w");
    char action[20];
    int value;
    while(fscanf(pf_in,"%s %d", &action, &value)!=EOF)
    {
        if((strcmp(action,"AF"))==0)
        {
            AddFirst(value);
        }
        if((strcmp(action,"AL"))==0)
        {
            AddLast(value);
        }
        if((strcmp(action,"DF"))==0)
        {
            DelFirst();
        }
        if((strcmp(action,"DL"))==0)
        {
            DelLast();
        }
        if((strcmp(action,"DOOM_THE_LIST"))==0)
        {
            DoomList();
        }
        if((strcmp(action,"DE"))==0)
        {
            DeleteCertainElement(value);
        }
        if((strcmp(action,"PRINT_ALL"))==0)
        {
            PrintAll(pf_out);
        }
        if((strcmp(action,"PRINT_F"))==0)
        {
            PrintFirst(value, pf_out);
        }
        if((strcmp(action,"PRINT_L"))==0)
        {
            PrintLast(value, pf_out);
        }
    }
    fclose(pf_in);

    return 0;
}
示例#7
0
void DelAfter(List *L,address *Pdel,address Prec) {
/*	I.S. List tidak kosong. Prec adalah anggota list.
	F.S. Menghapus Next(Prec).
	Pdel adalah alamat elemen list yang dihapus */
//Kamus Lokal
	address Pt;
//Algoritma 
	if(Prec==Last(*L)) DelFirst(L,Pdel);
	else if(Prec==Prev(First(*L))) DelLast(L,Pdel);
	else {
		(*Pdel) = Next(Prec);
		Pt = Next(*Pdel);
		Next(Prec) = Pt;
		Prev(Pt) = Prec;
	}
}
示例#8
0
文件: main.c 项目: Alecs94/DSA-lab
int main()
{
     char strng[20]; int value;
     FILE *d;
     d= fopen("input.dat", "r");
     while(fscanf(d, "%s %d", &strng, &value)!=EOF)
     {
         if (strcmp(strng,"AF")==0) AddFirst(value);
         if (strcmp(strng,"AL")==0) AddLast(value);
         if (strcmp(strng,"PRINT_ALL")==0) print_list();
         if (strcmp(strng,"DF")==0) DelFirst();
         if (strcmp(strng,"DL")==0) DelLast();
         if (strcmp(strng,"DOOM_THE_LIST")==0) DoomTheList();
         if (strcmp(strng,"DE")==0) DelAnElement(value);
         if (strcmp(strng,"PRINT_F")==0) PRINT_F(value);
         if (strcmp(strng,"PRINT_L")==0) PRINT_L(value);
     }
     fclose(d);
    return 0;

}
示例#9
0
文件: main.c 项目: Alecs94/DSA-lab
void DelAnElement(int x)
{
     node *prevNode=NULL, *currentNode;
     if (head!=NULL&&head->data==x)
        DelFirst();
     prevNode=head;
     currentNode=head;
     currentNode=currentNode->next;
     if (head!=NULL)
     {

         while (currentNode!=NULL)
         {
             if (currentNode->data==x)
             {
                if (currentNode==head)
                {
                    DelFirst();
                }
                else
                {
                    if(currentNode==tail)
                    {
                        DelLast();
                    }
                    else
                    {
                       currentNode->prev->next=currentNode->next;
                       currentNode->next->prev=currentNode->prev;
                       free(currentNode);
                    }
                }
             }

         }

     }
}