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

16_II / удаление элемента

.cpp
Скачиваний:
21
Добавлен:
10.02.2015
Размер:
1.16 Кб
Скачать
#include <iostream>
using namespace std;

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

void create_List (List *&nach, int n){
	List *p;
	nach=0;
	for(int i=0; i<n;i++){
		p=new List;
		cin>>p->data;
		p->next=nach;
		nach=p;}
}

void pokaz_List(List *nach){
	List *p;
	p=nach;
	while (p!=0){
		cout<<p->data<<" ";
		p=p->next;}
}

List *adress_x_List(List *nach,int x){
	List *p;
	p=nach;
	while((p!=0)&&(p->data!=x))
		p=p->next;
return p;
}

List *adress_pred_x_List(List *nach,int x){
	List *p, *pred_p;
	p=nach;
	pred_p=0;
	while((p!=0)&&(p->data!=x)){
		pred_p=p;
		p=p->next;
}
return pred_p;
}


void Delete_x_List(List *&nach, int x){
	List *p,  *q;
	if(adress_x_List(nach,x)==nach)
		nach=nach->next;
			else if (adress_x_List(nach,x)!=0){
				p=adress_x_List(nach,x);
				q=adress_pred_x_List(nach,x);
				q->next=p->next;
delete p;
}
}

void main(){
int n,x;
List *q;
List *nach1;
cout<<"n= ";
cin>>n;

create_List(nach1,n);
pokaz_List(nach1);
cout<<endl;
cout<<"x= ";
cin>>x;
q=adress_pred_x_List(nach1,x);
Delete_x_List(nach1,x);
cout<<endl;
pokaz_List(nach1);
cout<<endl;

}