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

vladis222

Active member
06.12.2011
31
0
#1
Здравствуйте,прошу вашей помощи в объяснении процедуры удаления элемента из списка. Прочитал вроде на сайте как удалять,но что-то очень плохо доходит материал, о том как удалять элемент, написал по принципу процедуру удаления, но программа ругается. Вот код программы :
C++:
#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();
}