Удаление Элементов Из Односвязного Списка

Тема в разделе "C/C++/C#", создана пользователем mcbeat, 22 дек 2011.

  1. mcbeat

    mcbeat Гость

    Сделал список, теперь нужно удалить каждый второй элемент((

    Помогите пожалуйста, уже второй день мучаюсь(((

    Код (C++):
    #include<iostream.h>
    #include<conio.h>
    #include<stdio.h>

    struct Node{
    int data;
    Node*next;};

    int main(){
    Node*start;
    int m,q,r;

    cout<<"Кол-во записей: "<<endl;
    cin>>q;
    printf("Element: ");
    cin>>m;
    Node*spis=new Node;
    spis->data=m;
    spis->next=NULL;
    start=spis;
    for(int i=0;i<q-1;i++){
    spis->next=new Node;
    printf("Element: ");
    cin>>m;
    spis->next->data=m;          
    spis->next->next=NULL;
    spis=spis->next;}
    spis=start;
    while(spis){
    cout<<" \nPole: "<<spis->data<<" \nTek adress: "<<spis<<" \nNext adress: "<<spis->next<<endl;
    spis=spis->next;}
    int n,kol=0,max=0;           //Вывод всех ел
    cout<<" \nVvedite M=";
    cin>>n;
    spis=start;
    while(spis){
    if(spis->data==n) kol++;      //Количество ел с м свойствами
    spis=spis->next;}
    cout<<" \nKolichestvo elementov: "<<kol;

    spis=start;
    max=spis->data;
    while(spis){
    if(spis->data>max)  //Макс ел
    max=spis->data;
    spis=spis->next;}
    cout<<" \nMaximaln element: "<<max;
    spis=start;
    while(spis->next!=NULL){     
    Node*tmp;
    tmp=spis->next->next;  // Удаление
    delete spis->next;
    spis->next=tmp;
    spis=spis->next;
    }
    while(spis){
    cout<<" \nPole: "<<spis->data<<" \nTek adress: "<<spis<<" \nNext adress: "<<spis->next<<endl;
    spis=spis->next;}

    getch();
    return 0;
    }
     
Загрузка...

Поделиться этой страницей