agenda.cpp

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

CPP
136
字号
#include<stdio.h>
#include<string.h>
#include<conio.h>

struct TEL{
	char nume[20];
	long int nrtel;
	TEL *next;
	  };
 TEL*head=NULL;

 void push(char nt[],int nr)
	{
	 TEL*p,*q;
	 p=new TEL;
	 strcpy(p->nume,nt);
	 p->nrtel=nr;
	 p->next=NULL;
	 if(head==NULL){
	    head=p;
	    head->next=NULL;
	    }
	 else{
		if(strcmp(head->nume,p->nume)>=0){
			p->next=head;
			head=p;}
	       else{
			for(q=head;q!=NULL;q=q->next){
			 if(strcmp(q->nume,p->nume)<=0&&head->next==NULL){
			    q->next=p;
			    p->next=NULL;
			 }
			 else if(strcmp(q->nume,p->nume)<=0&&strcmp(q->next->nume,p->nume)>=0){
				p->next=q->next;
				q->next=p;
				p->next->next=NULL;break;}
			if(q->next==NULL) q->next=p;
			}
	       }
	 }
 }
 void pop(){
       TEL*p,*q;
       char s[20],c;
       int k=0;
       while((c=getchar())!='-')
	    s[k++]=c;
       s[k]='\0';
	for(q=head;q!=NULL&&(strcmp(q->next->nume,s)!=0);q=q->next);
	if(q==NULL) printf("\nPERSOANA NU SE AFLA IN LISTA!");
	else{
	     p=q->next;
	     q->next=q->next->next;
	}
       }

 void creare(int n){
	char sir[20],c;
	int i,k,nr;
	for(i=1;i<=n;i++){
		k=0;
		printf("\nNUME:");
		while((c=getchar())!='-')
			sir[k++]=c;
		sir[k]='\0';
		printf("\nNR. TELEFON:");
		scanf("%ld",&nr);
		push(sir,nr);
	}
 }

 void snume(){
	TEL *q;
	int num;
	scanf("%d",&num);
	for(q=head;q!=NULL&&(q->nrtel!=num);q=q->next);
	if(q==NULL) printf("\nNUMARUL NU SE AFLA IN LISTA!");
	else printf("\nNUMELE ESTE:%s",q->nume);

}

 void snr(){
	TEL *q;
	char s[20],c;
	int k=0;
	while((c=getchar())!='-')
	    s[k++]=c;
	s[k]='\0';
	for(q=head;q!=NULL&&(strcmp(q->nume,s)!=0);q=q->next);
	if(q==NULL) printf("\nPERSOANA NU SE AFLA IN LISTA!");
	else printf("\nNUMARUL ESTE:%ld",q->nrtel);
 }

 void afs(){
	TEL*p;
	for(p=head;p!=NULL;p=p->next){
		printf("\nNUME: %s",p->nume);
		printf("\nNR.TELEFON:%ld",p->nrtel);
	}
 }

 void main(){
	clrscr();
	int x,y;
	do{
	printf("\n[1]-INSERARE\n[2]-STERGERE\n[3]-CAUTARE NUME\n[4]-CAUTARE NR.TELEFON\n[5]-AFISARE\n[0]-QUIT");
	printf("\nINTRODUCETI:");
	scanf("%d",&x);
	switch(x){
		case 1:
			printf("\nINTRODUCETI NR. DE PERSOANE:");
			scanf("%d",&y);

			creare(y);break;
		case 2:
			printf("\nINTRODUCETI NUMELE:");
			pop();break;
		case 3:
			printf("\nINTRODUCETI NR.TEL:");
			snume();break;
		case 4:
			printf("\nINTRODUCETI NUMELE:");
			snr();break;
		case 5:
			afs();break;
	}
	}while(x!=0);
	head=NULL;
	getch();
 }





⌨️ 快捷键说明

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