头文件:
#ifndef _LINKLIST_H
#define _LINKLIST_H
#define FAILURE 10000
#define SUCCESS 10001
#define TRUE 10002
#define FALSE 10003
#define NONE "\e[0m"
#define BLACK "\e[0;30m"
#define L_BLACK "\e[1;30m"
#define RED "\e[0;31m"
#define L_RED "\e[1;31m"
#define GREEN "\e[0;32m"
#define L_GREEN "\e[1;32m"
#define BROWN "\e[0;33m"
#define YELLOW "\e[1;33m"
#define BLUE "\e[0;34m"
#define L_BLUE "\e[1;34m"
#define PURPLE "\e[0;35m"
#define L_PURPLE "\e[1;35m"
#define CYAN "\e[0;36m"
#define L_CYAN "\e[1;36m"
#define GRAY "\e[0;37m"
#define WHITE "\e[1;37m"
typedef int ElemType;
struct node
{
char name[20];
ElemType old; //数据域
struct node *next; //指针域
};
typedef struct node Node;
int LinkInit(Node **l);
void LinkInsert(Node *l);
void seek(Node *l);
void delete(Node *l);
void chglist(Node *l);
#endif
功能函数:
#include "LinkList.h"
#include <stdlib.h>
#include <stdio.h>
int LinkInit(Node **l)
{
*l = (Node *)malloc(sizeof(Node) * 1); //分配头结点 l 就是头指针
if (NULL == *l)
{
return FAILURE;
}
(*l)->next = NULL; //头结点指针域为空
return SUCCESS;
}
void LinkInsert(Node *l) //n 插入的位置
{
char flag = 'y';
Node *p = l;
while(flag == 'y')
{
if (NULL == l)
{
printf("地址空间申请失败!\n");
sleep(2);
break;
}
while (p->next != NULL)
{
p = p->next;
}
Node *q = (Node *)malloc(sizeof(Node) * 1);
if (NULL == q)
{
printf("malloc error!\n");
sleep(2);
break;
}
printf(L_PURPLE"请输入添加联系人的信息:name,old:\n"NONE);
scanf("%s", q->name);
getchar();
scanf("%d",&q->old);
q->next = p->next;
p->next = q;
printf("是否继续添加:y or n ?\n");
getchar();
scanf("%c", &flag);
}
}
void LinkTraverse(Node *l)
{
if (NULL == l)
{
printf("malloc error !\n");
}
Node *q = l;
while (q->next)
{
q = q->next;
printf("%s %d\n", q->name, q->old);
}
sleep(2);
}
void seek(Node *l)
{
Node *q = l;
char s[20] = {0};
printf("请输入要查找的联系人的名字:\n");
scanf("%s", s);
while(q->next)
{
q = q->next;
if(strcmp(s, q->name) == 0)
{
printf("此人信息如下:%s %d\n", q->name, q->old);
break;
}
}
if(q == NULL)
printf("查无此人");
sleep(2);
}
void delete(Node *l)
{
char s[20] = {0};
printf("请输入想要删除的联系人名字:\n");
scanf("%s", s);
Node *q = l;
if (l == NULL)
{
printf("malloc error !\n");
sleep(2);
}
while(q->next)
{
q = q->next;
if(strcmp(s, (q->next)->name) == 0)
{
break;
}
}
Node *n = q->next;
q->next = n->next;
free(n);
}
void chglist(Node *l)
{
Node *q = l;
char s[20] = {0};
printf("请输入要修改的联系人的名字:\n");
scanf("%s", s);
while(q->next)
{
q = q->next;
if(strcmp(s, q->name) == 0)
{
printf("请重新输入该联系人的信息:\n");
scanf("%s", q->name);
getchar();
scanf("%d", &q->old);
break;
}
}
if(q == NULL)
printf("查无此人");
sleep(2);
}
void welcome()
{
system("clear");
printf(YELLOW"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
printf(L_BLUE"**________**________**_______**____\n"NONE);
printf(L_PURPLE"\n 欢迎来到菲利普专用山寨机!\n"NONE);
printf(L_BLUE"**________**________**_______**____\n"NONE);
printf(YELLOW"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
sleep(2);
}
void menu()
{
system("clear");
printf(GREEN"\n\n\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n"NONE);
printf(BLUE" 1、添加联系人 2、查看联系人信息\n"NONE);
printf(PURPLE" 3、查找联系人 4、删除联系人信息\n"NONE);
printf(L_GREEN" 5、GPS全球定位 6、一键导入联系人\n"NONE);
printf(L_BLUE" 7、修改联系人 8、退出山寨菲利普\n"NONE);
printf(GREEN"\n******************************************************************\n\n\n"NONE);
}
主函数:
#include "LinkList.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ret, i, choice;
Node *first = NULL; //头指针
system("clear");
ret = LinkInit(&first);
if (ret == FAILURE)
{
printf(YELLOW"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
printf(L_BLUE"**________**________**_______**____\n"NONE);
printf(L_PURPLE"\n 系统空间不足,无法初始化通讯录!\n"NONE);
printf(L_BLUE"**________**________**_______**____\n"NONE);
printf(YELLOW"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
exit(0);
}
else
{
printf(YELLOW"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
printf(L_BLUE"**________**________**_______**____\n"NONE);
printf(L_PURPLE"\n 通讯录初始化成功!即将进入系统服务。。。\n"NONE);
printf(L_BLUE"**________**________**_______**____\n"NONE);
printf(YELLOW"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
}
sleep(3);
welcome();
while(1)
{
menu();
printf("请输入功能选项:\n");
printf("Please input:\n");
scanf("%d", &choice);
switch(choice)
{
case 1:
LinkInsert(first);
break;
case 2:
LinkTraverse(first);
break;
case 3:
seek(first);
break;
case 4:
delete(first);
break;
case 5:
printf("抱歉,请联系客服充值会员即可享受此服务!\n");
sleep (3);
break;
case 6:
printf("此服务只有内部员工才可获得的福利,你没希望了!\n");
sleep(3);
break;
case 7:
chglist(first);
break;
case 8:
printf("山寨机就是牛!\n");
printf("\n\n\n因为牛b所以信赖!\n\n\n欢迎下次使用!\n\n\n");
sleep(3);
system("clear");
exit(0);
break;
}
}
return 0;
}