#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
char name[21]; // 名字 最长可以输入20个字符 最后1位作后面的越界检查用
char phone[12]; // 电话 同上
char address[31]; // 多余的
struct node *next;
};
typedef struct node Node;
typedef Node * Link;
int dispaly1(); // 外文件函数声明
void creat_head(Link *); //创建带表头的单向链表
void creat_node(Link *); //创建新的结点
void mode_choose(Link head); //模式选择 增删查改 显示 退出
void insert_name(Link); // 增 先输入姓名
void insert_num(Link); //先输入电话
void insert_sort(Link,Link); //链表插入结点 同时排序
void search_name(Link,int); //按姓名查找
void search_num(Link,int); //按电话查找
void display(Link); //显示
void release(Link *); //释放链表
int mygets(char *,int); //从键盘输入字符串
int check_name(char *); //按照姓名查
int check_num(char *); //按照电话查 //删和改建立在查的基础上
int main()
{
Link head;
creat_head(&head);
mode_choose(head);
release(&head);
return 0;
}
void creat_head(Link * head) //创建一个带表头结点的链表
{
creat_node(head);
}
void creat_node(Link * new_node) //创建一个新的结点 并将该结点的指针域指向空
{
*new_node = (Link)malloc(sizeof(Node));
(*new_node)->next = NULL;
}
void mode_choose(Link head)
{
char Mode[2]="1",mode1[2],mode2[2],mode3[2],mode4[2];
while(1)
{
if(Mode[0] != '5') // 选择模式前现清屏 显示时不能清屏
{
display1();
}
printf("选择模式:");
while(mygets(Mode,2)); //从键盘读入只有一个字符的字符串
switch(Mode[0])
{
case '1': printf("<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>\n");
printf("<<< 插入: 1 先输入姓名 2 先输入电话 3 退出此模式 >>>\n");
printf("<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>\n");
while(1)
{
printf("选择子模式:");
while(mygets(mode1,2));
printf("><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><\n");
switch(mode1[0])
{
case '1':insert_name(head);break; //先输入姓名
case '2':insert_num(head);break; //先电话
case '3':break;
default :printf("输入错误!");break; //提示
}
if(mode1[0] == '3') //跳出死循环
{
break;
}
}
break;
case '2': printf("><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><\n");
printf("<<< 查找: 1 按姓名查找 2 按电话查找 3 退出此模式 >>>\n");
printf("><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><\n");
while(1)
{
printf("选择子模式:");
while(mygets(mode2,2));
printf("><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><\n");
switch(mode2[0])
{
case '1':search_name(head,1);break; //按名字查找 参数1 为查找
case '2':search_num(head,1);break; //按电话查找
通讯录(链表)
最新推荐文章于 2022-07-03 23:46:36 发布