构建一个链表,链表长度任意,最好大于3。删除其中某个节点(可为首节点,中间节点或尾节点)。程序运行过程中会显示2次提示信息,第1次提示“请输入链表的长度”,请输入自然数后以回车结束。此时,需要输入指定长度的链表。第2次提示是“要删除的数”,将链表中指定的数删除。
#include <iostream>
using namespace std;
struct Node {
int data;
Node *next;
};
class lianbiao {
public:
lianbiao() {
first = new Node;
first->next=NULL;
}
lianbiao(int a[],int n) {
Node *s;
first = new Node;
Node *r;
r = first;
for(int i = 0; i < n; i++) {
s = new Node;
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void Delete (int x) {
Node *p;
p=first;
while(p!=NULL) {
if(p->next->data==x) {
Node *q;
q = new Node;
q=p->next;
p->next=q->next;
delete q;
p=p->next;
}
else
p=p->next;
}
}
void show() {
Node *p;
p = first;
while(p->next!=NULL) {
cout<<p->next->data;
p=p->next;
}
}
private:
Node *first;
};
int main() {
int n;
cout<<"请输入链表的长度:"<<endl;
cin>>n;
int a[n];
for(int i = 0; i < n; i++) {
cin>>a[i];
}
lianbiao l(a,n);
int b;
cout<<"请输入要删除的数:"<<endl;
cin>>b;
l.Delete(b);
l.show();
return 0;
}
当我输入要删除的元素之后按回车程序卡死,显示return value 3221225477,这是为什么呢
#include <iostream>
using namespace std;
struct Node {
int data;
Node *next;
};
class lianbiao {
public:
lianbiao() {
first = new Node;
first->next=NULL;
}
lianbiao(int a[],int n) {
Node *s;
first = new Node;
Node *r;
r = first;
for(int i = 0; i < n; i++) {
s = new Node;
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void Delete (int x) {
Node *p;
p=first;
while(p!=NULL) {
if(p->next->data==x) {
Node *q;
q = new Node;
q=p->next;
p->next=q->next;
delete q;
p=p->next;
}
else
p=p->next;
}
}
void show() {
Node *p;
p = first;
while(p->next!=NULL) {
cout<<p->next->data;
p=p->next;
}
}
private:
Node *first;
};
int main() {
int n;
cout<<"请输入链表的长度:"<<endl;
cin>>n;
int a[n];
for(int i = 0; i < n; i++) {
cin>>a[i];
}
lianbiao l(a,n);
int b;
cout<<"请输入要删除的数:"<<endl;
cin>>b;
l.Delete(b);
l.show();
return 0;
}
当我输入要删除的元素之后按回车程序卡死,显示return value 3221225477,这是为什么呢
