如何从结构中实现的链表中删除所有对象?在我的删除功能(loeschen)显示漫画编号后,我不再知道我的指针在哪里。
struct domino {
int data1;
int data2;
domino *next;
};
int readSteine (){ //Reading from numbers from file
FILE *file;
if((file=fopen("datei.dat", "r") )==NULL) { /
std::cout<<"File cant be open"<<std::endl;
return 0;
}else {
int beginning;
int temp;
fscanf(file, "%d", &beginning);
for(int i=0; i<beginning; i++) {
domino *domino1= new domino;
//if(i>0) temp2->next=domino1;
fscanf(file, "%i", &temp);
domino1->data1=temp;
fscanf(file, "%i", &temp);
domino1->data2=temp;
printf("[%d:%d]", domino1->data1, domino1->data2);
domino1->next=0;
}
}return 0;
}
删除列表的功能:
void deletelist (domino *head) {
domino* tmp;
while(head != 0) {
tmp=head->next;
delete head;
head=tmp;
}
}
int main() {
domino *pHead=NULL;
domino s;
readSteine();
deletelist(pHead);
std::cout<<s.data1<<"...."<<s.data2<<std::endl;
return 0;
}
答案 0 :(得分:1)
以下是一个明确方法的示例。我们的想法是遍历列表并逐个删除节点。
Node *pDel = _pHead;
/* Traverse the list and delete the node one by one from the head */
while (pDel != NULL) {
/* take out the head node */
_pHead = _pHead->_pNext;
delete pDel;
/* update the head node */
pDel = _pHead;
}
/* Reset the head and tail node */
_pTail = _pHead = NULL;
答案 1 :(得分:-1)
定义函数,如
@XmlElement(name = "Date", required = true)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar date;
并将其称为
void loeschen (dominostein **kopf) {
dominostein* tmp;
while(*kopf != 0) { //bzw. NULL
tmp = ( *kopf )->next;
delete *kopf;
*kopf = tmp;
}
}
或以下方式
loeschen(&pKopf);
并将其称为
void loeschen (dominostein * &kopf) {
dominostein* tmp;
while( kopf != 0) { //bzw. NULL
tmp = ( kopf )->next;
delete kopf;
kopf = tmp;
}
}
您的原始功能也正确但删除了所有节点后
loeschen(pKopf);
您应该将loeschen(pKopf);
设置为NULL
pKopf
或者您根本不应该使用此指针来访问已删除的节点。:)
考虑到这个陈述
pKopf = NULL;
没有意义,因为在创建对象时,对象std::cout<<s.data1<<"...."<<s.data2<<std::endl;
的数据成员data1
和data2
没有被广泛化
s
此对象与列表没有任何共同之处。
函数domino s;
不使用main
readSteine
pHead
你shpuld重写了这个功能。这是错误的。
答案 2 :(得分:-1)
你的loeschen永远不会工作,因为你传递给它只是一个NULL。 首先需要正确构建列表。首先,你需要将你的Kopf(一种对它的引用)传递给readSteine函数,然后将它分配给每个新的下一个,然后为它分配新的多米诺骨牌,依此类推以形成链表。 / p>
我强烈建议您阅读Programming: Principles and Practice Using C++ 。
您将C函数和编程风格与C ++混合在一起。你甚至不需要知道这些C函数,这些函数很难学习,以便开始学习C ++。