1 struct Node{ 2 int Element; 3 struct Node *Next; 4 }
1 List MakeEmpty(List L) 2 { 3 L->Next=NULL; 4 return L; 5 }
int isEmpty(List L) { return L->Next == NULL; }
Position Find(ElementType x,List L) { Position p; p = L->Next; while(p!=NULL && p->ElementType !=x) p=p->Next; return p; }
Position FindPrevious(ElementType x,List L) { Position p; p = L; while(p->Next!=NULL && p->Next-Element !=x) p=p->Next; return p; }
删除:删除元素之前要保存它的位置,使用FindPrevious()获取它的前继,如果获取的是最后一个则没找到此元素;
void Delect(ElementType x,List L) { Position p,tmp; P = FindPrevious(x,L); if(!isLast(p,L)) // 测试是否为最后一个 { tmp = p->Next; p->Next = tmp->Next; free(tmp); } }
void Insert(ElementType x,Position p,List L) { Position tmp; tmp = (Position)malloc(sizeof(struct Node)); if(tmp==NULL) printf("out of space!\n"); else { tmp->Element = x; tmp->Next = p->Next; p->Next = tmp; } }
原文地址:http://www.cnblogs.com/avengervirus/p/3812535.html