代码如下所示
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct DualLinkList{
int a;
DualLinkList *pre;
DualLinkList *next;
};
//创建链表
void creatDualLinkList(DualLinkList *&head){
head = new DualLinkList;
head->a = 0;
head->next = NULL;
head->pre = NULL;
DualLinkList* p = head;
fstream file;
file.open("test.txt");
int i;
while(file >> i){
DualLinkList* temp = new DualLinkList;
temp->a = i;
p->next = temp;
temp->pre = p;
p = p->next;
}
p->next = NULL;
}
//打印链表
void print(DualLinkList *&head){
DualLinkList* r = head->next;
while(r->next!=NULL)
{
cout<<r->a<<" ";
r = r->next;
}
cout<<r->a<<" ";
cout<<endl;
}
//写入txt文件
void write(DualLinkList *&head){
fstream file;
file.open("test.txt");
DualLinkList* r = head->next;
while(r->next!=NULL)
{
file<<r->a<<" ";
r = r->next;
}
file<<r->a<<" ";
}
//插入链表元素
void insertDualLinkList(DualLinkList *&head,int n,int position){
int count = 0;
DualLinkList* p = head;
while(p->next != NULL){
if(count<position){
p = p->next;
count++;
}else{
DualLinkList *temp = new DualLinkList;
temp->next = p->next;
temp->pre = p;
temp->a = n;
p->next = temp;
temp->next->pre = temp;
break;
}
}
}
//删除链表元素
void deleteDualLinkList(DualLinkList *&head,int n){
int count = 0;
DualLinkList* p = head;
DualLinkList* temp = p;
while(p->a != n && p->next != NULL){
temp = p;
p = p->next;
}
temp->next = p->next;
temp->next->pre = temp;
}
int main(){
DualLinkList *head = new DualLinkList;
creatDualLinkList(head);
print(head);
write(head);
insertDualLinkList(head,99,5);
print(head);
deleteDualLinkList(head,99);
print(head);
write(head);
return 0;
}
编辑test.txt内容如下并放入项目文件夹中进行测试
运行结果