sub02.cpp

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

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

typedef int Atom;

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

Element* cap;
void InitLista(Element*& cap);
void InserareFata(Element*& cap, Atom n);
void AfisareLista(Element* cap);
int CautareElement(Element* cap, int el);
void InserareElement(Element*& cap, Atom n, int poz);

void main(void)
{
	int n, p;
	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",&n);
	if(CautareElement(cap,n))
		printf("\n\tValoarea %d se afla in lista.",n);
	else
		printf("\n\tValoarea %d nu se afla in lista.",n);
	printf("\n\tIntroduceti un nou elment, n si pozitia in care acesta va fi inserat, p:\tn= ");
	scanf("%d",&n);
	printf("\n\tp= ");
	scanf("%d",&p);
	InserareElement(cap, n, p);
	printf("\n\tLista actualizata este:\n\t");
	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,int n)
{
	Element* p;
	p=new Element;
	p->data=n;
	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 el)
{
	Element* p;
	p = cap;
	while (p!=0)
	{
		if(p->data==el)
			return 1;
		p = p->link;
	}
	return 0;
}

void InserareElement(Element*& cap, Atom n, int poz)
{
	Element *x,*p;
	int c=0;
	p=cap;
	if(poz==0)
		printf("\n\tEROARE !\n");
	else
		if(poz==1)
			InserareFata(cap, n);
		else
		{
			x=new Element;
			x->data=n;
			p=cap;
			while(p!=0)
			{
				c++;
				if((poz-1)==c)
				{
					x->link=p->link;
					p->link=x;
				}
				p=p->link;
			}
		}
}

⌨️ 快捷键说明

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