sub03.cpp

来自「STRUCTURI DE DATE SI ALGORITMI」· C++ 代码 · 共 120 行

CPP
120
字号
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

typedef int Atom;

struct Element
{
	Atom data;
	Element* link;
};

void InitLista(Element*& cap);
void InserareFata(Element*& cap,Atom a);
void AfisareLista(Element* cap);
int CautareElement(Element*& cap,int n);
void StergereElement(Element*& cap,int n);

void main()
{
	int n, x, poz;
	Element *cap,*l;
	clrscr();
	InitLista(cap);
	printf("\tIntroduceti elementele listei pe o linie separate de spatii\
(sirul se\nincheie cu valoarea 0):\n\t");
	scanf("%d",&n);
	while(n!=0)
	{
		InserareFata(cap,n);
		scanf("%d",&n);
	}
	printf("\n\tAm citit : ");
	AfisareLista(cap);
	printf("\n\tIntroduceti valoarea de cautat:");
	scanf("%d",&x);
	if(CautareElement(cap,x))
		printf("\n\tValoarea %d se afla in lista!",x);
	else
		printf("\n\tValoarea %d nu se afla in lista!",x);
	printf("\n\tIntroduceti pozitia elementului de sters:");
	scanf("%d",&poz);
	StergereElement(cap,poz);
	printf("\n\tLista actualizata:");
	AfisareLista(cap);
	printf("\n\n\t\t\t     ---- T H E    E N D ----\n");
	getch();
}

void InitLista(Element*& cap)
{
	cap=0;
}

void InserareFata(Element*& cap,Atom a)
{
	Element *p;
	p=new Element;
	p->data=a;
	p->link=cap;
	cap=p;
}

void AfisareLista(Element* cap)
{
	Element *p;
	p=cap;
	while(p!=0)
	{
		printf(" %d",p->data);
		p=p->link;
	}
}

int CautareElement(Element*& cap,int n)
{
	Element *p;
	p=cap;
	while(p!=0)
	{
		if(p->data==n)
			return 1;
		p=p->link;
	}
	return 0;
}

void StergereElement(Element*& cap,int n)
{
	int c=0;
	Element *p,*q;
	p=cap;
	while(p!=0)
	{
		c++;
		if(n<=0)
		{
			printf("\n\tEroare, stergere in lista vida");
			getch();
			exit(1);
		}
		else
			if(n==1)        //stergere in fata
			{
				p=cap;
				cap=cap->link;
				delete(p);
				break;
			}
			else
				if((n-1)==c)
				{
					q=p->link;
					p->link=q->link;
					delete(q);
				}
		p=p->link;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?