#include<stdio.h>#include<stdlib.h>#defineERRORNULLtypedefint ElementType;typedefstructLNode*PtrToLNode;structLNode{
ElementType Data;
PtrToLNode Next;};typedef PtrToLNode Position;typedef PtrToLNode List;
Position Find( List L, ElementType X );
List Insert( List L, ElementType X, Position P );
List Delete( List L, Position P );
list.c
Position Find( List L, ElementType X ){while(L){if(L->Data == X){return L;}
L = L->Next;}return ERROR;}
List Insert( List L, ElementType X, Position P ){
List LNode = L;
List tmp =(List)malloc(sizeof(structLNode));
tmp->Data = X;if(L == P){//如果P是头结点
tmp ->Next = L;return tmp;}while(L){//p不是头结点if(L->Next == P){
L->Next = tmp;
tmp->Next = L->Next->Next;return LNode;}
L = L->Next;}printf("Wrong Position for Insertion\n");return ERROR;}
List Delete( List L, Position P ){
List LNode = L;if(P == L)//如果P是头结点{
L = L->Next;free(LNode);return L;}while(L){if(L->Next == P ){
List tmp = P;
L->Next = L->Next->Next;free(tmp);return LNode;}
L = L->Next;}printf("Wrong Position for Deletion\n");return ERROR;}