从排序的链接列表中删除节点时遇到问题。我从.txt文件读入了73个必须按字母顺序排序的不同名称。我有一个switch语句应该能够对链表执行5个单独的事情。目前我已经拿到1号和2号的工作,但不是三号。 #3希望我能够从链接列表中删除名称。在我输入要删除的名称后,我的代码不会显示任何内容。因此我假设我遇到了deleteAfter函数的问题。任何人都可以给我一个暗示,为什么这可能是?将链接列表按字母顺序排序
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct node{
string name;
node *next;
};
node *A = NULL;
void addnode(string newname){
node *add,
*last,
*current;
add = new node;
add->name = newname;
if (A == NULL){
add->next = A;
A = add;
}else{
current = A;
last = A;
while (current && current->name < newname){
last = current;
current = current->next;
}
if (current == A){
/* Insert before 1st node */
add->next = A;
A = add;
}
else{
/* Insert between last and current
or at the end of the list */
last->next = add;
add->next = current;
}
}
}
void deleteName(string name)
{
node *curr;
node *nextNode;
curr = A;
nextNode = curr;
while(curr){
if(curr -> next -> name == name){
nextNode = curr -> next;
curr -> next = nextNode -> next;
}
}
}
void display()
{
node *curr;
curr = A;
while(curr){
if(A == NULL){break;}
cout << A->name << endl;
A = A->next;
}
}
int main(){
int input, count;
count = 0;
ifstream dataFile;
dataFile.open("Data.txt");
string item;
string name;
while(dataFile)
{
dataFile >> item;
addnode(item);
count++;
}
cout << "1. Display the linked list\n";
cout << "2. Display the length of the list\n";
cout << "3. Delete name from the list\n";
cout << "4. display the length of a section of the list\n";
cout << "5. Print out section of list\n";
cin >> input;
switch (input)
{
case 1:
display();
break;
case 2:
cout << "There are " << count - 1 << " names in the list\n";
break;
case 3:
cout << "Type in the name that you want to be deleted: ";
cin >> name;
deleteName(name);
display();
break;
case 4:
break;
case 5:
break;
}
system("PAUSE");
return 0;
}
这是我到目前为止的代码。你会注意到,在我的主函数中,我从一个名为“Data.txt”的文件读取输入。
joe
bob
harry
mary
brian
tom
jerry
bullwinkle
pam
ellis
dale
bill
barrack
george
gertrude
zack
zeus
apollo
gemini
greg
larry
meriam
webster
thomas
stewart
dianna
theresa
billyjoe
carl
karl
charles
karla
donna
tena
kerry
howard
johnson
ulyssess
paul
peter
issaac
marvin
dudz
chuck
ellie
anny
judy
matt
ross
dan
robert
kim
eric
junkun
ghassan
cris
raymond
avery
roy
halley
mitzee
ziggy
rocky
twirly
max
huey
dewy
hongkongfooey
clarence
lala
sammy
fred
francis
这就是txt文件由^^组成的内容。任何建议将不胜感激。谢谢!
我想知道的是,每个人都不断变得教导使用'系统( “暂停”)'... – dreamlax
指针的使用不正确,我害怕。当使用指针时,你应该处理*创建*和*删除*。我在代码中看不到删除。 – Elyasin