您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页通讯录的制作

通讯录的制作

来源:爱玩科技网
个人收集整理 仅供参考学习

1、 通讯录的制作 #include #include #include #include #include

struct Address //说明结构 {

char name[20]; char Tel[20]; char Email[20]; char Relation[20]; Address *next ; } ;

Address allone[3] ;

void Createlist(Address *&head) //建立链表函数 { Address *s,*p; s=new Address; int a=1;

while ( a==1) {

cout<<\"请输入姓名:\"; cin>>s->name;

cout<<\"请输入电话号:\"; cin>>s->Tel;

cout<<\"请输入Email:\"; cin>>s->Email;

cout<<\"请输入与您关系:\"; cin>>s->Relation; {

if ( head == NULL ) head = s ; else p->next = s ; } p = s ;

s = new Address ;

cout<<\"是否继续输入,输入按1不输入按0 :\"; //判断是否继续输入 cin>>a; }

p->next = NULL; delete s; return ; }

void showlist( Address *head ) //显示链表 { cout << \"您的通信录为: \"<< '\\n';

1 / 10

个人收集整理 仅供参考学习

while( head ) {

cout << head->name << '\'; cout <Tel<<'\'; cout << head->Email << '\'; cout << head->Relation << '\\n'; head = head->next ; }

cout << endl ; }

void Chayuelist(Address *head) //查阅链表 {

char chayue[20];

cout<<\"请输入你所要查阅的姓名:\"; cin>>chayue; while( head ) {

if(strcmp(head->name,chayue)==0) {

cout << head->name << '\'; cout <Tel<<'\'; cout << head->Email << '\'; cout << head->Relation << '\\n'; }

head = head->next ; }

cout << endl ; }

void baocun(Address *head)//保存 {

ofstream outstuf ;

outstuf.open(\"c:\\\\save.txt\ if ( !outstuf ) {

cerr << \"File could not be open.\" << endl ; abort(); }

while( head ) {

outstuf << head->name << ' '<< head->Tel<<' '<< head->Email << ' '<< head->Relation << '\\n' ;

文档收集自网络,仅用于个人学习 cout << \"? \" ;

head = head->next ; }

2 / 10

个人收集整理 仅供参考学习

}

void tianjia(Address *&head) //添加 {

Address *s;

s=new Address;//生成新结点 cout<<\"\\n\\请输入姓名:\"; cin>>s->name;

cout<<\"\\n\\请输入电话号:\"; cin>>s->Tel;

cout<<\"\\n\\请输入Email:\"; cin>>s->Email;

cout<<\"\\n\\请输入与您关系:\"; cin>>s->Relation;

cout<<\"\\n\\你已经添加成功\"; s->next=head; head=s; return ; }

void main() //主函数 { system(\"cls\"); int gongnenghao;

Address*head = NULL ;

cout<<\"*************************本程序为通讯***********************\"<cout<<\" 请选择你所要实现的功能的编号\"<>gongnenghao; if(gongnenghao==1) {

Createlist(head); }

if (gongnenghao==2) {

showlist(head); }

if (gongnenghao==3)

3 / 10

录管理系统

个人收集整理 仅供参考学习

{

Chayuelist(head); }

if (gongnenghao==8) {

baocun(head); }

if(gongnenghao>9) {

cout<<\"退出\"; }

if (gongnenghao==9) {

tianjia(head); } } }

2、求回文串

#include using namespace std; //定义栈

typedef struct stack { char bata;

struct stack *next; }Stack; //定义队列

4 / 10

个人收集整理 仅供参考学习

typedef struct QNode { char data;

struct QNode *next; }QNode, *QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; int main() {

Stack *top = new Stack; if(!top) exit(1);

top = NULL;//初始化栈

LinkQueue *x = new LinkQueue; if(!x) exit(1);

x->front = x->rear=NULL;//初始化队列

cout<<\"请输入要检测的字符串,可以包含空格,以@结束\"<cin>>sr[i];

stack *s1 = new stack; if(!s1) exit(1); if(i==0) {

s1->next = NULL; //输入栈第一个数据 s1->bata=sr[i]; top = s1; }

s1->bata = sr[i]; s1->next = top; top = s1;

QNode *x1 = new QNode; if(!x1) exit(1);

if(i==0) //输入队列第一个数据 {

x1->data = sr[i]; x->front = x1; x->rear = x1;

x->front->next = NULL; }

x1->data = sr[i];

5 / 10

个人收集整理 仅供参考学习

x->rear->next = x1; x->rear = x1; } while(sr[i]!='@');

cout<<\"检测结果\"<if(top==NULL&&x->front==NULL) cout<<\"未输入!!!\"<top = top->next; //将'@'字符删除 while(top!=NULL&&x->front!=NULL) {

if(top->bata!=x->front->data) {

cout<<\"此字符串不是回文!\"<cout<<\"此字符串是回文。\"<2、 模拟停车厂管理的问题 #include using namespace std; #define OVERFLOW -2 #define OK 1 #define ERROR 0

#define STACK_INIT_SIZE 100 #define STACKINCRENT 10 #define NULL 0 struct SNode{ char CState; int CNumber; int CTime;

6 / 10

个人收集整理 仅供参考学习

};//定义一个结构体结点 typedef struct {

SNode *base; SNode *top; int stacksize;

}SqStack;//分配栈的存储空间 typedef struct QNode{ SNode date; struct QNode *next;

}QNode,*QueuePtr;//队列链表结点 typedef struct { QueuePtr front; QueuePtr rear;

}LinkQueue;//分配队列的存储空间 ////////////////////////////////////////////////// //函数的建立

int InitStack(SqStack &S){ //构造一个栈

S.base=new SNode[STACK_INIT_SIZE]; if(!S.base)exit(OVERFLOW); S.top=S.base;

S.stacksize=STACK_INIT_SIZE; return OK; }

int Push(SqStack &S,SNode e){ //入栈

*S.top++=e; return OK; }

int Pop(SqStack &S,SNode &e){ //出栈

if(S.top==S.base)return ERROR; e=*--S.top; return OK; }

int InitQueue(LinkQueue &Q){ //建一个空队列

Q.front=Q.rear=new QNode; Q.front->next=NULL; return OK; }

int EnQueue(LinkQueue &Q,SNode e){ //入队列 QNode *p;

7 / 10

个人收集整理 仅供参考学习

p=new QNode;

if(!p)exit(OVERFLOW); p->date=e; Q.rear->next=p; Q.rear=p; return OK; }

int DeQueue(LinkQueue &Q,SNode &e){ //出队列

if(Q.front==Q.rear) return ERROR; QNode *p;

p=new QNode; p=Q.front->next; e=p->date;

Q.front->next=p->next; if(Q.rear==p)Q.rear=Q.front; delete(p); return OK; }

//////////////////////////////////////////// int main(){

SqStack S1,S2; LinkQueue Q; InitStack(S1); InitStack(S2); InitQueue(Q);

/*构造两个空栈S1,S2和一个队列Q*/ int n,price,i=1;

cout<<\"停车场有多少个位置?\"<>n;

cout<<\"每分钟的价格是多少?\"<>price; SNode k; do{

cout<<\"输入信息\"<>k.CState>>k.CNumber>>k.CTime;

if(k.CState!='A'&&k.CState!='D'&&k.CState!='E'){ cout<<\"输入错误,请重新输入\"<if(k.CState=='A'){

if(S1.top-S1.base>=n){

8 / 10

个人收集整理 仅供参考学习

EnQueue(Q,k);

cout<<\"停车场已满,车子放在便道上的\"<Push(S1,k);//K入栈

cout<<\"车子放在停车场的\"<}//到达状态的处理 else if(k.CState=='D'){ SNode e,a,g; while(1){

Pop(S1,e);//删除栈顶元素,返回一个e

if(e.CNumber==k.CNumber){//如果返回的车牌和输入的车牌一样就输出停留时间和所需费用文档收集自网络,仅用于个人学习 int time,money;

time=k.CTime-e.CTime; money=time*price;

cout<while(S2.top-S2.base!=0){//S2不空就把S2的元素给S1 Pop(S2,a); Push(S1,a); }//while

while(S1.top-S1.basePush(S1,g); }//while

break;//当弹出的e和我们输入的k车牌号一样时跳出循环体 }//if

else Push(S2,e);//当弹出的e和我们输入的k车牌号不一样时,e入栈s2且继续循环体 }//while

}//离去状态的处理

}while(k.CState!='E');//当状态为结束时 结束输入 return 0; }//main

9 / 10

个人收集整理 仅供参考学习

10 / 10

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务