Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

,sxrjd / 4 / nodes

.cpp
Скачиваний:
22
Добавлен:
27.03.2016
Размер:
1.96 Кб
Скачать
#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;
}