点击查看代码
//Delete d node at nth position
#include<iostream>
using namespace std;
struct node {
int data;
node* next;
};
node* A;
void insert(int x) {
node* temp = new node;
temp->data = x;
temp->next = NULL;
if (A == NULL) {
A = temp;
}//头指针为空时要建立globle区与heap区的link才能通过头指针索引
else {
node* run = A;
while (run->next != NULL) {
run = run->next;
}
run->next = temp;
}//头指针不为空时用遍历指针索引
}
void print() {
node* run = A;
while (run != NULL) {
cout << run->data << " ";
run = run->next;
}
}
void Delete(int n) {
node* run = A;
if (n == 1) {
A = run->next;//头指针指向2节点
delete run;//删除1节点的动态内存
return;
}//遍历指针不能代替头指针与heap区建立link。但需用遍历指针指向2节点
for (int i = 0; i < n - 2; i++) {
run = run->next;
}//结束时run指向n-1节点
run->next = (run->next)->next;//n-1节点尾巴指向n+1节点
delete run->next;//删除n节点的动态内存
}
int main() {
A = NULL;
insert(2);
insert(4);
insert(6);
insert(5);
print();
int n;
cin >> n;
Delete(n);
print();
}