1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Работа Со Списками В С++

Тема в разделе "Вопросы новичков и не только", создана пользователем vladis222, 11 фев 2013.

  1. vladis222

    vladis222 Active Member

    Репутация:
    0
    Регистрация:
    6 дек 2011
    Сообщения:
    31
    Симпатии:
    0
    Здравствуйте,прошу вашей помощи в объяснении процедуры удаления элемента из списка. Прочитал вроде на сайте как удалять,но что-то очень плохо доходит материал, о том как удалять элемент, написал по принципу процедуру удаления, но программа ругается. Вот код программы :
    Код:
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h>
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    struct Node{
    int info;
    Node* next;
    };
    
    void Add(Node* &Head, int Info)
    {
    if (Head == NULL)
    {
    Head = new Node;
    Head->info=Info;
    Head->next=NULL;
    }
    else
    {
    Node *Temp;
    Temp = Head;
    while(Temp->next != NULL)
    {
    Temp = Temp->next;
    }
    Temp->next = new Node;
    Temp->next->info = Info;
    Temp->next->next = NULL;
    }
    }
    
    void Show(Node *Head)
    {
    Node* Temp = Head;
    while(Temp!=0)
    {
    std::cout<<Temp->info<<"->";
    Temp=Temp->next;
    }
    }
    
    void del_sp(Node * &Head,int Info)/*Удаление элемента из списка с заданной информационной частью */
    {
    if(Head==NULL) /*Если голова списка пуста */
    cout<<"Spisok pust !!! "; 
    else
    {
    if(Head->info==Info) /*Если удаляемый элемент-первый */
    {
    Node * Temp=Head;
    Head=Head->next;
    delete(Temp);
    }
    
    Node * Tec=new Node; /*Это-удаление обычного элемента списка,но здесь программе что-то не нравится,объясните пожалуйста что не так,расскажите пожалуйста про алгоритм удаления из списка,может что не так делаю.*/
    Tec=Head;
    Node * Pred=new Node;
    while(Tec!=NULL)
    {
    Pred=Tec;
    Tec=Tec->next;
    }
    Pred->next=Tec->next;
    delete(Tec);
    
    }
    }
    
    
    int main(){
    Node *Head = new Node;
    Head = NULL;
    Add(Head, 100);
    Add(Head, 23);
    Add(Head, -400);
    Add(Head, 80);
    Add(Head, 10);
    Add(Head,35);
    Show(Head);
    cout<<endl;
    del_sp(Head,100);
    Show(Head);
    cout<<endl;
    del_sp(Head,-400);
    Show(Head);
    cout<<endl;
    getch();
    }
     
Загрузка...

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