C++操作链表

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 struct Node{
 6     int data;
 7     Node *next;
 8 };
 9 
10 Node* InitNodeList(){
11     Node *node=0;//定义一个空指针
12     return node;
13 }
14 
15 Node* addNode(Node *nodeList,Node *node)
16 {
17     if(nodeList == 0)
18     {
19         nodeList=node;
20     }else{
21         nodeList->next = node;
22     }
23     node->next=0;
24     
25     return nodeList;
26 }
27 
28 Node* delNode(Node *nodeList,int data)
29 {
30     Node *p,*q;
31     p = q = nodeList;
32 
33     if(nodeList == 0)
34     {
35         cout << "链表为空" << endl;
36         return nodeList;
37     }
38     if(nodeList->data == data)
39     {
40         nodeList=p->next;
41         delete p;
42         cout << "deleted" << endl;
43     }
44     else
45     {
46         while((p->data!=data)&&(p->next!=0))
47         {
48             q=p;
49             p=p->next;
50         }
51         if((p->data)==data)
52         {
53             q->next=p->next;
54             delete p;
55             cout << "deleted" << endl;
56         }else
57             cout << "don't find the node:" << data << endl;
58     }
59     return nodeList;
60 }
61 
62 void printNodeList(Node *nodeList)
63 {
64     Node *p=nodeList;
65     for(;p;)
66     {
67         cout << p->data << " ";
68         p=p->next;
69     }
70     cout << endl;
71 }
72 
73 int main(void){
74     Node *node=InitNodeList();
75 
76     Node *a=new Node;
77     a->data = 1;
78     Node *b = new Node;
79     b->data = 2;
80     
81     node = addNode(node,a);
82     node = addNode(node,b);
83     
84     printNodeList(node);
85 
86     node = delNode(node,2);
87     printNodeList(node);
88 
89     return 0;
90 }
原文地址:https://www.cnblogs.com/xxdfly/p/4372603.html