摘要:C/C++  数据结构

正文:用链式结构来实现电话号码查询系统,程序如下:

#include<iostream>
#include<malloc.h>
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
using namespace std;

typedef struct Node
{
char name[10];
char phoneNumber[12];
struct Node *next;
}ListNode;

//函数声明
ListNode *CreateList(int n);//创建
void InseartList(ListNode *h,int i,char name[],char phoneNumber[],int &n);//头插法插入 
void DeleteList(ListNode *h,int i,int &n); //删除
void OutList(ListNode *h);//显示

ListNode *InitList(void);//初始化
ListNode *InitList(void)
{
ListNode *head;
head=(ListNode*)malloc(sizeof(ListNode));
if(head==NULL) exit (1);
head->next=NULL;
return head;
}

//主函数
void main()
{
  ListNode *h;
  ListNode *InitList(void);
  int i,n;
  char phoneNumber[12];
  char name[10];
  while(1){
    cout<<"1.建立号码表"<<endl;
    cout<<"2.插入用户信息"<<endl;
    cout<<"3.删除用户信息"<<endl;
    cout<<"4.显示当前信息"<<endl;
    cout<<"0.退出"<<endl;
    cout<<"请输入相应的操作:"<<endl;
    cin>>i;
switch(i)
{
case 1:
   {
    cout<<"请输入结点个数:"<<endl;
    cin>>n;
    h=CreateList(n);
    break;
  }
case 2:
  {
     cout<<"请输入您要插入信息的位置:"<<endl;
     cin>>i;
     cout<<"请输入电话号码:"<<endl; 
     cin>>phoneNumber; 
     cout<<"请输入用户姓名:"<<endl; 
     cin>>name;
     InseartList(h, i,name,phoneNumber, n);
//+n+;//结点增1
     break;
  }
case 3:
  {
     cout<<"请输入要删除的位置"<<endl;
     cin>>i;
     DeleteList(h,i,n);
//n--;//结点减1
    break;
  }
case 4:
  {
     OutList(h);
     break;
  }
case 0:
  { 
     cout<<"感谢使用,再见!"<<endl;break;
  }  
}
}
}

//函数定义
//创建
ListNode *CreateList(int n)
{
  ListNode *head,*p,*pre;
  int i;
  head=(ListNode*)malloc(sizeof(ListNode));
  head->next=NULL;
  pre=head;
  for(i=1;i<=n;i++)
  { 
    cout<<"输入第"<<i<<"个用户的姓名"<<endl;
    p=(ListNode*)malloc(sizeof(ListNode));
    cin>>p->name;
cout<<"输入第"<<i<<"个用户的电话号码"<<endl;
cin>>p->phoneNumber;
    pre->next=p;
    pre=p;
  }
  p->next=NULL;
  return head;
}

//显示
void OutList(ListNode *h)
{
  ListNode *p;
  p=h->next;
  while(p)
  {
    cout<<p->name<<": "<<p->phoneNumber<<endl;
    p=p->next;
    cout<<endl;
  }
}

//头插法插入
void InseartList(ListNode *h,int i,char name[],char phoneNumber[],int &n)
{
  ListNode *q,*p;
  int j;
  if(i<1||i>n+1)
    cout<<"插入位置有误!"<<endl<<endl;
  else
  {
    j=0;p=h;
    while(j<i-1)
    { 
      p=p->next;
      j++;
    }
    q=(ListNode*)malloc(sizeof(ListNode));
    strcpy(q->name, name);
strcpy(q->phoneNumber,phoneNumber);
    q->next=p->next;
    p->next=q;
n++;
  }
}

//删除
void DeleteList(ListNode *h,int i,int &n)
{
  ListNode *p,*q;
  int j;
  char name[10];
  char phoneNumber[12];
  if(i<1||i>n)  
    cout<<"您的输入有误,请重新输入!\n";
  else
  {
    j=0;p=h;
    while(j<i-1)
    {
      p=p->next;
      j++;
    }
    q=p->next;
    p->next=q->next;
    strcpy(name, q->name);
strcpy(phoneNumber,q->phoneNumber);
    free(q);
n--;
  }  
}

电话号码查询系统(链式结构)相关推荐

  1. 设计散列表实现通讯录查找系统_[源码和文档分享]利用哈希表实现电话号码查询系统...

    第一章 需求分析 1.1 问题描述 设计一个电话号码查询系统,为来访的客⼈提供各种信息查询服务. 1.2 基本要求 设计每个记录有下列数据项:电话号码.用户名.地址 从键盘输入个记录,分别以电话号码和 ...

  2. 电话号码查询系统(数据结构之哈希表)

    哈希表 哈希表(Hash Table)是一种根据关键字直接访问内存存储位置的数据结构.通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数. 1. ...

  3. 《程序设计综合设计》课程设计--电话号码查询系统

    2.问题描述 1.设每个记录有下列数据项:电话号码.用户名.地址: 2.从键盘输入各记录,分别以电话号码和用户名为关键字建立哈希表: 3.查找并显示给定电话号码的记录: 4.查找并显示给定用户名的记录 ...

  4. 数据结构个人电话号码查询系统实验报告

    实验目的及要求 目的:通过设计一个<个人电话号码查询系统>,进一步熟悉一些二叉树的概念.以及基本知识和技能,利用所学的基本知识和技能解决简单的面向对象的程序设计问题.实现根据用户输入的信息 ...

  5. 输入手机号查询信息C语言,简单个人电话号码查询系统.doc

    课程设计任务书 2011-2012学年第1学期 电子与信息工程系 专业 班级 课程设计名称: 数据结构课程设计 设计题目: 简单个人电话号码查询系统 完成期限:自2012 年 1月2日至2012 年 ...

  6. 哈希表实现电话号码查询系统(c++)

    问题描述:设计哈希表实现电话号码查询系统,实现下列功能: (1) 假定每个记录有下列数据项:电话号码.用户名.地址. (2) 一是从数据文件old.txt(自己现行建好)中读入各项记录,二是由系统随机 ...

  7. 顺序、链式结构的个人书籍管理系统(C++)

    仅供课外学习使用,任何个人与机构不得利用此文章进行任何形式的作弊. 因上一作浏览量激增,不胜惶恐.故上传新版,恳请各路大神赐教. 个人书籍管理系统的编写.制作与实现(C语言) 项目要求 设计一个图书管 ...

  8. 任务19 简单个人电话号码查询系统

    系列文章 任务19 简单个人电话号码查询系统 问题描述 人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询 ...

  9. 哈夫曼树--链式结构(建立huffman树、编码、解码)

    引子: 用链式结构来建立哈夫曼树. 总体思路是: 将每一棵树(这是每一棵树只有一个节点,头节点)放在一个优先队列中(下面的是链表实现的优先队列),频率(rate)小的在队列头,取出队列头两个,频率相加 ...

最新文章

  1. uboot linux内核传递参数,Uboot与Linux之间的参数传递详解
  2. 利用partition分组查询 查询每个分组第一条数据
  3. 使用dtd--属性声明
  4. 图形学教程Lecture 14: RayTracing1(Acceleration Radiometry)知识点总结
  5. 水晶报表的统计功能-Crystal Report Sub total Per Page
  6. Web Service security UserNameToken 使用
  7. Mybatis使用的9种设计模式,真是太有用了
  8. 深入探究ConvNets vs. Transformers,哪种预训练模型的可迁移性更好?
  9. 人工智能AI、机器学习和深度学习的区别
  10. Android ToggleButton(状态切换按钮)
  11. 设置win10保护色
  12. finereport 格式化金额函数_格式化金额数与自动四舍五入
  13. 塔菲尔曲线如何分析_Tafel曲线是做什么的
  14. 【C++】哈希——unordered系列容器|哈希冲突|闭散列|开散列
  15. SQL exists 删除重复记录
  16. 【人工智能AI2.0】国产开源 ChatGPT: ChatGLM-6B 搭建属于你的永远免费的本地 ChatGPT
  17. 华硕fx80装linux,华硕FX80GM星途版(i7 8750H)如何bios设置u盘启动
  18. DNSPod十问沈添:低代码将让程序员集体失业?
  19. shell脚本一百例
  20. Nginx下codeigniter的rewrite规则配置

热门文章

  1. 决定物联网安全的有哪些因素
  2. WorkBook的SaveAs方法
  3. 激光测距VL53L0X查询方式 源代码 已测试
  4. Python机器学习:泰坦尼克号获救预测一
  5. 如何使用预约旺进行免费的在线平台预约
  6. IDEA 解决 artifacts not found 问题
  7. 嵌入式系统 操作系统 uC/OS uClinux
  8. php请求纯文本,php – 使用纯文本回退发送HTML简报
  9. yara规则--构建yara规则库
  10. 屏蔽按Esc、Enter和Alt+F4键时退出