链表C语言实现

> #include<stdlib.h> typedef struct Node { int a; struct Node* pNext; }Node; Node* top = NULL; Node* end = NULL; void addNode(int a) { Node* node = (Node*)malloc (sizeof(Node)); node->pNext = NULL; node->a = a; if(top==NULL) { top = node; } else { end->pNext = node; } end = node; } void delNode(int a) { Node *pptop = top; if(top->a==a) { Node* node=top; top = top->pNext; free(node); return; } while(pptop->pNext) { if(pptop->pNext->a == a) { Node* node=pptop->pNext; pptop->pNext = pptop->pNext->pNext; free(node); return; } pptop = pptop->pNext; } } Node* findNode(int a) { Node* pptop = top; while(pptop) { if(pptop->a==a) { return pptop; } pptop=pptop->pNext; } return NULL; } void showNode() { Node* pptop = top; while(pptop) { printf("%d ",pptop->a); pptop = pptop->pNext; } } int main() { int a=3; while(a--) { addNode(a); } showNode(); delNode(1); showNode(); return 0; }