日志
KiKi学习了结构体和指针,他了解了结构体类型可以定义包含多个不同类型成员,而指针本质是内存地址,是引用数据的另外一种方式。现在他想将多个输入的数据通过结构体和指针的方式连接在一起,形成一个单向链表,即:每个结点是结构体类型,包括整型数据成员(data)和结构体指针类型成员(next),每个结点的指针部分指向下一个输入的结点。具体建立过程如下:先输入n个整数,按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。输出删除后的单链表信息。
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
};
int main() {
int i, n, m;
cin >> n;
Node *head = new Node;
Node *p = new Node, *q;
cin >> p->data;
p->next = NULL;
head->next = p;
q = p;
for (i = 1; i < n; i++) {
Node* p = new Node;
p->next = NULL;
cin >> p->data;
q->next = p;
q = p;
}
p = head->next;
q = head;
cin >> m;
while (p != NULL) {
if (p->data == m) {
q->next = p->next;
p = q->next;
n--;
} else {
q = p;
p = p->next;
}
}
cout << n << endl;
p = head->next;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
return 0;
}