使用单链表制作电子通讯录
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
typedef struct people
{
char name[ 10 ] ;
long int num;
int add;
struct people * next;
} people;
typedef struct people * List;
int add ( List * L) ;
int delet ( List * L) ;
int find ( List * L) ;
int Exit ( List * L) ;
int out ( List * L) ;
int add ( List * L)
{
List s, f;
f= ( * L) -> next;
int i;
s= ( List) malloc ( sizeof ( people) ) ;
printf ( "\n输入你想插入的位置(第一次就是第一个位置也就是1第二次第二个2,以此类推):\n" ) ;
scanf ( "%d" , & i) ;
for ( int j= 0 ; j< i- 1 ; j++ )
{
f= f-> next;
}
printf ( "\n请输入您要添加的姓名:\n" ) ;
scanf ( "%s" , s-> name) ;
printf ( "请输入您要添加的号码:\n" ) ;
scanf ( "%d" , & s-> num) ;
s-> next = ( * L) -> next;
( * L) -> next = s;
return 0 ;
}
int delet ( List * L)
{
char na[ 10 ] ;
List p, s;
s= * L;
p= s-> next;
printf ( "\n请输入您要删除的姓名:\n" ) ;
scanf ( "%s" , na) ;
while ( strcmp ( p-> name, na) != 0 && p != NULL )
{
s= s-> next;
p= p-> next;
}
if ( p != NULL )
{
s-> next= p-> next;
printf ( "恭喜您将%s拉黑成功\n\n" , na) ;
}
if ( p == NULL )
{
printf ( "\n很抱歉,您拨打的用户已停机,请稍后再拨\n\n" ) ;
}
return 0 ;
}
int find ( List * L)
{
char a[ 20 ] ;
int flag= 0 ;
List p;
while ( ! flag)
{
p= ( * L) -> next;
if ( p == NULL )
{
printf ( "\n查了个寂寞\n\n" ) ;
break ;
}
printf ( "\n请输入拨打联系人的姓名\n" ) ;
scanf ( "%s" , a) ;
while ( strcmp ( p-> name, a) != 0 && p-> next != NULL )
{
p= p-> next;
}
if ( strcmp ( p-> name, a) != 0 && p-> next == NULL )
{
printf ( "\n很抱歉,您查询的用户已消失!!!\n\n" ) ;
break ;
}
out ( & p) ;
break ;
}
return 0 ;
}
int Exit ( List * L)
{
return 0 ;
}
int out ( List * L)
{
printf ( "\n姓名:%s\n号码:%d\n" , ( * L) -> name, ( * L) -> num) ;
return 0 ;
}
int main ( )
{
int i;
int flag;
int n= 0 ;
List l;
l = ( List) malloc ( sizeof ( people) ) ;
l-> next= NULL ;
while ( flag)
{
printf ( "*************************欢迎使用电子通讯录*************************\n" ) ;
printf ( "-------------------------------------\n" ) ;
printf ( "请输入项目前编号执行相关操作:\n" ) ;
printf ( "新建联系人按【1】\n删除联系人按【2】\n查询联系人按【3】\n退出按------【0】\n" ) ;
scanf ( "%d" , & i) ;
printf ( "\n" ) ;
switch ( i)
{
case 1 : add ( & l) ;
break ;
case 2 : delet ( & l) ;
break ;
case 3 : find ( & l) ;
break ;
case 0 : flag= Exit ( & l) ;
break ;
case 4 : printf ( "OneforMe\n" ) ;
break ;
default :
printf ( "\n????????????????????????????????????????????\n\n" ) ;
break ;
}
}
return 0 ;
}