用单链实现通讯录
来源:互联网 发布:kj90数据采集传输协议 编辑:程序博客网 时间:2024/05/19 02:42
#include <stdio.h>#include <stdlib.h>#include <string.h>#define T 1;#define F -1;struct address{ int id; char name[20]; char number[20]; char address[20]; struct address* next;};typedef struct address* node;int init(node* head); //头节点int insert(node head, int i); //添加用户void delete_id(node head); //按id删除void delete_name(node head); // 按名删除void delete_number(node head); //按号码删除void update_id(node head); //按id修改void update_name(node head); //按名修改void update_number(node head); //按号码修改void query_id(node head); //按id查找void query_name(node head); //按名查找void query_number(node head); //按号码查找void print_name(node head); //显示所有用户(按名)(冒泡排序(交换节点))void print_number(node head); //显示所有用户(按号码)(插入排序)void interface();int main(){ int n, i = 1, back = 1; int nd, idd; char named[20], numberd[20]; node head = NULL; init(&head); while (back) { interface(); scanf("%d", &n); printf("\n"); switch (n) { case 1: insert(head, i++);break; case 2: printf("\n\t\t\tdelete according to?\n\t\t\t1.id 2.name 3.number :"); int de; scanf("%d", &de); switch (de) { case 1: delete_id(head);break; case 2: delete_name(head);break; case 3: delete_number(head);break; default: printf("\t\t\twrong number\n");break; } break; case 3: printf("\n\t\t\tupdate according to?\n\t\t\t1.id 2.name 3.number :"); int up; scanf("%d", &up); switch (up) { case 1: update_id(head);break; case 2: update_name(head);break; case 3: update_number(head);break; default: printf("\t\t\twrong number\n");break; } break; case 4: printf("\n\t\t\tquery according to?\n\t\t\t1.id 2.name 3.number :"); int qu; scanf("%d", &qu); switch (qu) { case 1: query_id(head);break; case 2: query_name(head);break; case 3: query_number(head);break; default: printf("\t\t\twrong number\n");break; } break; case 5: printf("\n\t\t\tprintf according to?\n\t\t\t1.name 2.number :"); int pr; scanf("%d", &pr); switch (pr) { case 1: print_name(head);break; case 2: print_number(head);break; default: printf("\t\t\twrong number\n");break; } break; case 6: back = 0;break; default: printf("\t\t\twrong number\n");break; } } return 0;}int init(node* head){ node newnode = (node)malloc(sizeof(struct address)); if (NULL == newnode) { return F; } newnode->next = NULL; *head = newnode;}int insert(node head, int i){ node newnode = (node)malloc(sizeof(struct address)); if (NULL == newnode) { return F; } newnode->id = i; printf("\t\t\tPlesae input name: "); scanf("%s", newnode->name); printf("\t\t\tPlesae input number: "); scanf("%s", newnode->number); printf("\t\t\tPlesae input address: "); scanf("%s", newnode->address); newnode->next = head->next; head->next = newnode;}void delete_id(node head){ int i; printf("\t\t\tWho do you want to deleta?\n\t\t\tid:"); scanf("%d", &i); while (head->next->id != i) { head = head->next; } node temp = head->next->next; free(head->next); head->next = temp;}void delete_name(node head){ char name1[20]; printf("\t\t\tWho do you want to deleta?\n\t\t\tname:"); scanf("%s", name1); while (strcmp(head->next->name,name1) != 0) { head = head->next; } node temp = head->next->next; free(head->next); head->next = temp; }void delete_number(node head){ char number1[20]; printf("\t\t\tWho do you want to deleta?\n\t\t\tnumber:"); scanf("%s", number1); while (strcmp(head->next->number,number1) != 0) { head = head->next; } node temp = head->next->next; free(head->next); head->next = temp; }void update_id(node head){ int i; printf("\t\t\tWho do you want to update?\n\t\t\tid:"); scanf("%d", &i); while (head->next->id != i) { head = head->next; } printf("\t\t\tPlease input new name:"); scanf("%s", head->next->name); printf("\t\t\tPlease input new number:"); scanf("%s", head->next->number); printf("\t\t\tPlease input new address:"); scanf("%s", head->next->address);}void update_name(node head){ char name1[20]; printf("\t\t\tWho do you want to update?\n\t\t\tname:"); scanf("%s", name1); while (strcmp(head->next->name,name1) != 0) { head = head->next; } printf("\t\t\tPlease input new name:"); scanf("%s", head->next->name); printf("\t\t\tPlease input new number:"); scanf("%s", head->next->number); printf("\t\t\tPlease input new address:"); scanf("%s", head->next->address);}void update_number(node head){ char number1[20]; printf("\t\t\tWho do you want to update?\n\t\t\tnumber:"); scanf("%s", number1); while (strcmp(head->next->number,number1) != 0) { head = head->next; } printf("\t\t\tPlease input new name:"); scanf("%s", head->next->name); printf("\t\t\tPlease input new number:"); scanf("%s", head->next->number); printf("\t\t\tPlease input new address:"); scanf("%s", head->next->address);}void query_id(node head){ int i; printf("\t\t\tWho do you want to query?\n\t\t\tid:"); scanf("%d", &i); while (head->next->id != i) { head = head->next; } printf("\t\t\tid:%d\tname:%s\tnumber:%s\taddress:%s\n", head->next->id, head->next->name, head->next->number, head->next->address);}void query_name(node head){ char name1[20]; printf("\t\t\tWho do you want to query?\n\t\t\tname:"); scanf("%s", name1); while (strcmp(head->next->name,name1) != 0) { head = head->next; } printf("\t\t\tid:%d\tname:%s\tnumber:%s\taddress:%s\n", head->next->id, head->next->name, head->next->number, head->next->address);}void query_number(node head){ char number1[20]; printf("\t\t\tWho do you want to query?\n\t\t\tnumber:"); scanf("%s", number1); while (strcmp(head->next->number,number1) != 0) { head = head->next; } printf("\t\t\tid:%d\tname:%s\tnumber:%s\taddress:%s\n", head->next->id, head->next->name, head->next->number, head->next->address);}void print_name(node head){ int i, j, count = 0; node temp = head; while (temp->next != NULL) { count++; temp = temp->next; } for (i = 0; i < count - 1; i++) { node temp0 = head->next; node pre = head; for (j = count -1; j > i; j--) { if (strcmp(temp0->name,temp0->next->name) > 0) { pre->next = temp0->next; temp0->next = temp0->next->next; pre->next->next = temp0; temp0 = pre->next; } temp0 = temp0->next; pre = pre->next; } } while (head->next != NULL) { printf("\t\t\tid::%d\tname:%s\tnumber:%s\taddress:%s\n", head->next->id, head->next->name, head->next->number, head->next->address); head = head->next; }}void print_number(node head){ node p1 = head->next->next, pp1 = head->next; while (p1 != NULL) { node temp = p1; node p2 = head->next; node pp2 = head; while (p2 != p1) { if(strcmp(p2->number,p1->number) > 0) { p1 = p1->next; pp1->next = temp->next; pp2->next = temp; temp->next = p2; break; } p2 = p2->next; pp2 = pp2->next; } p1 = p1->next; pp1 = pp1->next; } while (head->next != NULL) { printf("\t\t\tid::%d\tname:%s\tnumber:%s\taddress:%s\n", head->next->id, head->next->name, head->next->number, head->next->address); head = head->next; }}void interface(){ printf("\n\t\t\tPlease select number:\n"); printf("\n\t\t\t****************************\n"); printf("\t\t\t* 1.insert 2.delete *\n"); printf("\t\t\t* 3.update 4.query *\n"); printf("\t\t\t* 5.print 6.quit *\n"); printf("\t\t\t****************************\n\n"); printf("\t\t\tYour choice is:");}
1.节点的排序
2. 数组可用scanf()
录入
阅读全文
0 0
- 用单链实现通讯录
- 实现通讯录
- 实现通讯录
- 实现通讯录
- iOS开发:通讯录之通讯录列表实现
- C++实现通讯录管理程序
- 手机通讯录实现
- 通讯录:C++实现
- 通讯录 实现简单查询
- sipdroid实现添加通讯录
- android 通讯录的实现
- 用链表实现一个通讯录
- 通讯录的实现
- c语言实现----通讯录
- python通讯录实现
- OC实现简单通讯录
- C语言实现通讯录
- 手机通讯录的实现
- 简单使用 SSKeychain 存储密码
- 解决图片滚轮放大以后覆盖其他组件的问题
- 各种字符集和编码详解
- LeetCode: 448. Find All Numbers Disappeared in an Array
- window7环境下使用easyBCD硬盘安装Ubuntu双系统
- 用单链实现通讯录
- 浏览器判别下载安装/打开Android应用程序
- 找数字
- java String字符串
- 95. Unique Binary Search Trees II
- [leetcode] 406. Queue Reconstruction by Height
- JS获取一段时间的日期(获取时间轴日期数组)
- chrome插件相关
- 【动态规划】Leetcode编程题解:523. Continuous Subarray Sum Add to List