java双向链表移除节点_删除双向链表中的节点

我试图从一个双向链表中删除一个节点,该节点包含已从文件中读入的数据,并将其重写为具有未删除节点的文件 . 但我这样做不正确 .

它只删除节点的一部分,或者不删除任何内容(起始节点) .

这是我的 Headers

hw07.h

#ifndef HW07_H_

#define HW07_H_

#include

#include

using namespace std;

typedef struct slist slist;

struct stud

{

string term;

string title;

string description;

string tktNum;

string location;

string lecDay;

string instructor;

string labLoc;

string labDay;

string labInstruct;

string units;

string preReqs;

string grade;

};

struct sentry

{

slist *list;

sentry *next;

sentry *prev;

stud *data;

};

struct slist

{

int length;

sentry *first;

sentry *last;

};

void readFile(slist *&header);

void deleteDataTN(slist *&header);

#endif

我的主要

hw07.cpp

#include "hw07.h"

int main()

{

slist *header = NULL;

readFile(header);

deleteDataTN(header);

return 0;

}

我的readFile函数

readFile.cpp

#include "hw07.h"

void readFile(slist *&header)

{

ifstream fin;

sentry *node, *temp;

fin.open("sbclassdb.txt");

while(!fin.eof())

{

if(header == NULL)

{

header = new slist;

header-> length = 0;

header-> first = NULL;

header-> last = NULL;

node = new sentry;

header-> first = node;

header-> last = node;

node-> prev = NULL;

node-> next = NULL;

}else

{

node = new sentry;

node-> prev = header-> last;

node-> next = NULL;

temp = header -> last;

temp-> next = node;

header-> last = node;

}

node->data = new stud;

getline(fin, node->data->term);

getline(fin, node->data->title);

getline(fin, node->data->description);

getline(fin, node->data->tktNum);

getline(fin, node->data->location);

getline(fin, node->data->lecDay);

getline(fin, node->data->instructor);

getline(fin, node->data->labLoc);

getline(fin, node->data->labDay);

getline(fin, node->data->labInstruct);

getline(fin, node->data->units);

getline(fin, node->data->preReqs);

getline(fin, node->data->grade);

header->length++;

string blankLine;

if(!getline(fin, blankLine))

break;

}

fin.close();

}

我的deleteData函数

deleteDataTN.cpp

#include "hw07.h"

void deleteDataTN(slist *&header)

{

sentry *node, *temp;

string ticketNum;

ofstream fout;

int index;

bool found;

found = false;

index = 0;

cout << "Ticket Number: ";

getline(cin, ticketNum);

node = header->first;

while(index < header->length && !found)

{

if(node->data->tktNum == ticketNum)

{

found = true;

free(node->data);

}

else

{

++index;

temp = node;

node = temp->next;

}

fout.open("sbclassdb.txt");

node = header->first;

for(int i=0; ilength; ++i)

{

fout << node->data->term << endl;

fout << node->data->title << endl;

fout << node->data->description << endl;

fout << node->data->tktNum << endl;

fout << node->data->location << endl;

fout << node->data->lecDay << endl;

fout << node->data->instructor << endl;

fout << node->data->labLoc << endl;

fout << node->data->labDay << endl;

fout << node->data->labInstruct << endl;

fout << node->data->units << endl;

fout << node->data->preReqs << endl;

fout << node->data->grade << endl;

temp = node;

node = temp->next;

fout << "\n";

}

}

我的文本文件用于读取文件

sbclassdb.txt

Fall 2017

CS1A

Intro to Computer Science 1

11111

SM101

TTH 100PM

John Doe

SM102

TTH 300PM

John Doe

5

NA

A

Spring 2018

CS1B

Intro to Computer Science 2

22222

SM101

TTH 200PM

Jane Doe

SM102

TTH 300PM

Jane Doe

5

CS1A

NA

Spring 2018

CS4A

Into to Java for Computer Science

12345

BGS101

MWF 200PM

Bob Smith

BGS102

Bob Smith

4

CS1B

NA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值