简介:
用顺序表实现电话本的功能(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("nnnn --------------- WSM's phonetxt-------------------nn");
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("nnnn 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------phonenumbern");
struct Node *q = s1.mylist;
for(q;
q<s1.mylist+s1.len;
q++) {
printf(" %s %sn",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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- C语言线性表的顺序表示与实现实例详解
- c语言实现顺序表的基本操作
- C语言实现顺序表基本操作汇总
- 利用C语言实现顺序表的实例操作
- C语言顺序表实现代码排错
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C语言顺序表的实现代码
- C语言实现动态顺序表的实现代码
- C语言实现静态顺序表的实例详解
- C语言实现的顺序表功能完整实例