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 + -
显示快捷键?