#include <iostream>
#include <stdlib.h>
#include<stdio.h>
#include<assert.h>
using namespace std;
typedef struct Node{
int data;
Node * next;
}node;
void print(node *head) {
node *p = head;
while(p) {
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void insert(node **head,int value) {
node *q = new node();
assert(NULL != q);
q->data= value;
if(NULL == *head) {
q->next = NULL;
*head = q;
}else {
q->next = *head;
*head = q;
}
}
void del(node **head, int value) {
node *p = *head;
node *pre = NULL;// 前驱
while(p) {
if(p->data == value) {
if(pre) {
// 非第一个节点
pre->next = p->next ;
delete p;
} else {
//第一个节点就是
*head = p->next;
delete p;
}
break;
}
pre = p;
p=p->next;
}
}
int main(int argc, char *argv[])
{
node *head = NULL;
insert(&head,5);
print(head);
insert(&head,6);
print(head);
insert(&head,7);
print(head);
insert(&head,8);
print(head);
del(&head,5);
print(head);
del(&head,7);
print(head);
system("PAUSE");
return 0;
#include <stdlib.h>
#include<stdio.h>
#include<assert.h>
using namespace std;
typedef struct Node{
int data;
Node * next;
}node;
void print(node *head) {
node *p = head;
while(p) {
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void insert(node **head,int value) {
node *q = new node();
assert(NULL != q);
q->data= value;
if(NULL == *head) {
q->next = NULL;
*head = q;
}else {
q->next = *head;
*head = q;
}
}
void del(node **head, int value) {
node *p = *head;
node *pre = NULL;// 前驱
while(p) {
if(p->data == value) {
if(pre) {
// 非第一个节点
pre->next = p->next ;
delete p;
} else {
//第一个节点就是
*head = p->next;
delete p;
}
break;
}
pre = p;
p=p->next;
}
}
int main(int argc, char *argv[])
{
node *head = NULL;
insert(&head,5);
print(head);
insert(&head,6);
print(head);
insert(&head,7);
print(head);
insert(&head,8);
print(head);
del(&head,5);
print(head);
del(&head,7);
print(head);
system("PAUSE");
return 0;
}
output:
5
6 5
7 6 5
8 7 6 5
8 7 6
8 6