删除部分有什么问题
What is wrong with the delete section?
这是我的代码。我遇到的问题是我无法使工作成为删除器部分。我想删除结构的一个元素。下面是您添加、搜索和删除添加的元素的基本结构。此外,元素按递增顺序排序。
#include <iostream>
using namespace std;
struct el {
int key;
el *next;
} *start;
void init();
void add(int n);
void list();
void search(int n); // ima za dopylvane
void deleter(int n);
void main() {
init();
int n, num;
do {
cout << "n Menun";
cout << "n1 - Add element";
cout << "n2 - List elements";
cout << "n3 - Searching for element";
cout << "n4 - Delete element";
cout << "n5 - Exit";
cout << "n Your choice:";
cin >> n;
switch (n) {
case 1:
{
cout << "n Input num:";
cin >> num;
add(num);
break;
}
case 2:
{
list();
break;
}
case 3:
{
cout << "n Input num for searching:";
cin >> num;
search(num);
break;
}
case 4:
{
cout << "n Input num for deleting:";
cin >> num;
deleter(num);
break;
}
}
}
while (n != 5);
}
void list() {
el *p = start;
if (start) while (p) {
cout << p->key << " ";
p = p->next;
} else cout << "n Empty list";
}
void init() {
start = NULL;
}
void add(int n) {
el *p = start;
if (!start) {
start = new el;
start->key = n;
start->next = NULL;
} else {
if (start->key > n) {
start = new el;
start->key = n;
start->next = p;
} else {
el * q;
while ((p->key < n) && (p->next)) {
q = p;
p = p->next;
}
if (p->key > n) {
el *s;
s = new el;
s->key = n;
s->next = p;
q->next = s;
} else {
el *s;
s = new el;
s->key = n;
s->next = NULL;
p->next = s;
}
}
}
}
void search(int n) {
el *p = start;
if (!start) cout << "nEmpty list!";
else while ((p->key != n) && (p-> next))
p = p->next;
if (p->key == n) cout << "nYes!";
else cout << "nNo!";
}
void deleter(int n) {
el *p = start;
if (!start) cout << "Enfsad";
else while ((p->key != n) && (p->next)) {
n = start->key;
start = start->next;
delete p;
}
}
你的删除器函数应该是这样的。
void deleter (int n)
{
el *p = start;
el *prev = p;
if (!start)
{
cout<<"Enfsad";
}
if(start->key == n)
{
start = start->next;
delete prev;
}
else
{
while (p)
{
if(p->key == n)
{
prev->next = p->next;
p->next = NULL;
delete p;
break;
}
prev = p;
p = p->next;
}
}
}
虽然我认为你需要检查一个好的链表应该如何。
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- c++无值sort()的问题是什么?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 基本的 c++ 问题:如果我在函数中创建某些内容并返回它会发生什么?
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 什么是钻石问题?是一系列问题还是特定问题?
- 格式说明符C++有什么问题
- 我应该在 main 函数中写什么来测试我的问题?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 方法问题 - 什么会改变值,什么不会改变?什么是无效的?