C语言使用顺序表实现电话本功能
时间:2019-04-13
本文章向大家介绍C语言使用顺序表实现电话本功能,主要包括C语言使用顺序表实现电话本功能使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
简介:
用顺序表实现电话本的功能(C语言)
电话本具有如下4个功能:
1.创建一个电话本,电话本里面包含名字和电话号码
2.在指定位置插入一个名字和电话号码
3.在指定位置删除一个名字和电话号码
4.打印电话本
代码:
//其中那个color函数是我为了美观加上去的,如果感觉不需要的话可以将代码中所有有关color的都删掉即可 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <windows.h> using namespace std; const int N = 1000+10; int n; struct Node { char name[100]; char number[20]; }; typedef struct { struct Node* mylist; int len; int listsize; }sqlist; void Init(sqlist &s1); void Creat(sqlist &s1); void Delet(sqlist &s1); void Add(sqlist &s1); void Print(sqlist &s1); void color(const unsigned short color1); int main() { sqlist s1; Init(s1); color(10); printf("\n\n\n\n --------------- WSM's phonetxt-------------------\n\n"); printf(" |You could chose these ops: |\n"); printf(" | 1.Creat the phonetxt |\n"); printf(" | 2.Delet the member in the phonetxt |\n"); printf(" | 3.Add the member in the phonetxt |\n"); printf(" | 4.Print the phonetxt |\n"); color(14); printf("\n\n\n\n Now,you can enter an optiton:"); int op; while(scanf("%d",&op)!=EOF) { if(op==1) Creat(s1); else if(op==2) Delet(s1); else if(op==3) Add(s1); else if(op==4) Print(s1); else { color(4); printf(" You input is invalid,reinput please:)\n"); color(14); } printf("\n Now,you can enter an optiton:"); } return 0; } void Init(sqlist &s1) { s1.mylist = (Node *)malloc(100*sizeof(Node)); s1.len = 0; s1.listsize = 100; return; } void Creat(sqlist &s1) { s1.len = 0; cout<<" how many numbers do you want to built:"; scanf("%d",&n); cout<<" please input their informations:"<<endl; for(int i=1;i<=n;i++) { printf(" input the %d person name:",i); scanf(" %s",s1.mylist[i-1].name); printf(" input the %d person phonenumber:",i); scanf(" %s",s1.mylist[i-1].number); s1.len++; } color(9); cout<<" well done,the phonetxt has been created!!!"<<endl; color(14); return; } void Delet(sqlist &s1) { cout<<" please enter the number you want to delet:"; heredelet: int x; scanf("%d",&x); if( x<1 || x>s1.len) { color(4); cout<<" sorry,your input is invalid,please input again:"; color(14); goto heredelet; } struct Node *p,*q; p = &(s1.mylist[x-1]); q = s1.mylist + s1.len -1; for(++p;p<=q;++p) *(p-1) = *p; --s1.len; color(9); cout<<" well done,the member has been deleted!!!"<<endl; color(14); return; } void Add(sqlist &s1) { cout<<" please enter the number you want to add:"; hereadd: int x; scanf("%d",&x); if( x<1 || x>s1.len+1) { color(4); cout<<" sorry,your input is invalid,please input again:"; color(14); goto hereadd; } struct Node cur; printf(" input the person name:"); scanf(" %s",cur.name); printf(" input the person phonenumber:"); scanf(" %s",cur.number); struct Node *p,*q; q = &(s1.mylist[x-1]); for(p=&(s1.mylist[s1.len-1]);p>=q;--p) *(p+1) = *p; *q = cur; ++s1.len; color(9); cout<<" well done,the member has been added!!!"<<endl; color(14); return; } void Print(sqlist &s1) { color(8); printf(" Name------phonenumber\n"); struct Node *q = s1.mylist; for(q;q<s1.mylist+s1.len;q++) { printf(" %s %s\n",q->name,q->number); } color(14); color(9); cout<<" well done,the phonetxt is above!!!"<<endl; color(14); return; } void color(const unsigned short color1) { if(color1>=0&&color1<=15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1); else SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); return; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- 第2章 对象激活上下文-对象激活
- .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
- .Net 转战 Android 4.4 日常笔记(3)--目录结构分析
- .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
- 读书笔记(二)对象激活和上下文
- 程序员的噩梦有哪些?除了改需求,还有这些…
- UC Berkeley提出新型分布式执行框架Ray:有望取代Spark
- 卡奇话爬虫使用方法以及下载地址
- flash读取XML 背景自动适应大小
- 记录一个发邮件的cs文件
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox
- xml-rpc(2)-first demo_v2
- xml-rpc(1)-first demo
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-工作流设计-表单布局
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- React 开发要知道的 34 个技巧
- 算法篇:求1的个数
- 新特性解读 | MySQL 8.0 语句摘要功能介绍
- 10个不那么知名但很实用的Web API
- 技术分享 | 一文了解高并发限流算法
- prometheus-operator 监控 k8s 外部集群
- Kubernetes 通过statefulset部署redis cluster集群
- 猿实战13——实现你没听说过的前台类目
- 猿实战14——前台类目之广告牌设置
- 猿实战15——关联你所不明白的前后台类目
- 完美解决方案-雪花算法ID到前端之后精度丢失问题
- 猿实战16——承运商之搭建你的运费基石
- List对象去重及按属性去重的8种方法-java基础总结第六篇
- 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇
- 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇