#include "stdafx.h" struct Node { Node *Next;//节点 int Data;//节点的值 Node* NodeAdd(Node *head, int data);//添加一个节点 Node* NodeErase(Node *head, int data);//删除指定值的节点 void display(Node *head);//顺序输出链表 void redisplay(Node *head);//倒序输出链表 Node* NodeDelete(Node *head);//删除链表所有的节点 }; Node* Node::NodeAdd(Node *head, int data) { if(head == NULL) { head = new Node; head->Data = data; head->Next = NULL; return head; } else { Node *temp = head; while(temp->Next != NULL) { temp = temp->Next; } temp->Next = new Node; temp->Next->Data = data; temp->Next->Next = NULL; return head; } } Node* Node::NodeErase(Node *head, int data) { if(head == NULL) { return NULL; } else if(head->Data == data) { Node *temp = head; head = head->Next; delete temp; return head; } else { for(Node *temp1, *temp2 = head; temp2->Next != NULL; temp2 = temp2->Next) { if(temp2->Next->Data == data) { temp1 = temp2->Next; temp2->Next = temp2->Next->Next; delete temp1; break; } } return head; } } void Node::display(Node *head) { Node *temp = head; while(temp != NULL) { printf("%d/n", temp->Data); temp = temp->Next; } } void Node::redisplay(Node *head) { if(head == NULL) { return; } else { redisplay(head->Next); printf("%d/n", head->Data); } } Node* Node::NodeDelete(Node *head) { if(head == NULL) { return NULL; } else { Node *temp = NULL; while(head->Next != NULL) { temp = head; head = head->Next; delete temp; } head = NULL; return head; } } void main() { Node *head = NULL; head = head->NodeAdd(head, 1); head = head->NodeAdd(head, 2); head = head->NodeAdd(head, 3); head = head->NodeAdd(head, 4); head = head->NodeAdd(head, 5); head = head->NodeAdd(head, 6); head = head->NodeAdd(head, 7); head = head->NodeAdd(head, 8); head = head->NodeAdd(head, 9); head = head->NodeDelete(head); head->display(head); head = head->NodeDelete(head); head = head->NodeErase(head, 7); head = head->NodeErase(head, 3); head = head->NodeErase(head, 10); head = head->NodeErase(head, 18); head = head->NodeErase(head, 2); head = head->NodeErase(head, 44); head = head->NodeErase(head, 2); head->redisplay(head); }