#include#include #define ERROR NULLtypedef enum { false, true} bool;typedef int ElementType;typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode Position;typedef PtrToLNode List;List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );int main(){ List L; ElementType X; Position P; int N; bool flag; L = MakeEmpty(); scanf("%d", &N); while ( N-- ) { scanf("%d", &X); flag = Insert(L, X, L->Next); if ( flag==false ) printf("Wrong Answer\n"); } scanf("%d", &N); while ( N-- ) { scanf("%d", &X); P = Find(L, X); if ( P == ERROR ) printf("Finding Error: %d is not in.\n", X); else { flag = Delete(L, P); printf("%d is found and deleted.\n", X); if ( flag==false ) printf("Wrong Answer.\n"); } } flag = Insert(L, X, NULL); if ( flag==false ) printf("Wrong Answer\n"); else printf("%d is inserted as the last element.\n", X); P = (Position)malloc(sizeof(struct LNode)); flag = Insert(L, X, P); if ( flag==true ) printf("Wrong Answer\n"); flag = Delete(L, P); if ( flag==true ) printf("Wrong Answer\n"); for ( P=L->Next; P; P = P->Next ) printf("%d ", P->Data); return 0;}
List MakeEmpty(){ List L=(List)malloc(sizeof(struct LNode)); L->Next=NULL; return L;}Position Find( List L, ElementType X ){ List p= L->Next; while(p) { if(p->Data==X) { return p; } p=p->Next; } return ERROR;}bool Insert( List L, ElementType X, Position P ){ List q= L; while(q) { if(q->Next==P) { List node=(List)malloc(sizeof(struct LNode)); node->Data=X; node->Next=q->Next; q->Next=node; return true; } q=q->Next; } printf("Wrong Position for Insertion\n"); return false;}bool Delete( List L, Position P ){ List q=L; while(q) { if(q->Next==P) { q->Next=q->Next->Next; return true; } q=q->Next; } printf("Wrong Position for Deletion\n"); return false;}