Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
struct node{
int data;
struct node *next;
struct node *prev;
};
node *list = NULL;
void addnode(int);
void showlist();
bool delnode(int);
int main(){
int dat;
srand(time(NULL));
for(int i=0; i<10; i++){
dat = rand();
cout << "add data: " << dat << "\n";
addnode(dat);
}
showlist();
cout << "delete data: ";
cin >> dat;
if( delnode(dat) ) cout << "delete success" << "\n";
else cout << "delete failed" << "\n";
showlist();
cout << "delete data: ";
cin >> dat;
if( delnode(dat) ) cout << "delete success" << "\n";
else cout << "delete failed" << "\n";
showlist();
cout << "delete data: ";
cin >> dat;
if( delnode(dat) ) cout << "delete success" << "\n";
else cout << "delete failed" << "\n";
showlist();
getchar();
}
void addnode(int d){
node *newnode, *p=list;
newnode = new node;
newnode->data = d;
newnode->next = NULL;
newnode->prev = NULL;
if( list == NULL){
list = newnode;
return;
}
if(list->data > newnode -> data){
newnode->next = list;
list->prev = newnode;
list = newnode;
return;
}
while(p->next != NULL && p->next->data < newnode->data) p = p->next;
newnode->prev = p;
newnode->next = p->next;
if(p->next != NULL) p->next->prev = newnode;
p->next = newnode;
}
void showlist(){
node *p=list;
cout << "List:" << "\n";
while(p != NULL){
cout << p->data << "\n";
p = p->next;
}
cout << "End of list" << "\n";
}
bool delnode(int d){
node *p=list;
while(p != NULL && p->data != d) p = p->next;
if(p == NULL) return false;
p->prev->next = p->next;
p->next->prev = p->prev;
delete p;
return true;
}