当前位置: 首页 > ops >正文

C语言实现顺序存储结构

本实验基于数据结构中的线性表,使用顺序存储结构。实现C语言的通讯表。

代码如下:


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 20//定义最大容量//有什么需要帮助可以加企鹅号:2758566124//使用线性表的顺序存储--实现通讯录
typedef struct//定义数据类型
{int id;char name[20];int phone;
}Data;typedef struct//定义顺序表
{Data* elem;//初始地址int length;
}SqList;int initList(SqList* L)
{L->elem = (Data*)malloc(maxsize);//动态创建if (!L->elem){printf("创建失败\n");return -1;}L->length = 0;//表的长度return 0;
}int ListInsert(SqList* L)
{if (L->length == maxsize){printf("空间已满\n");return -1;}printf("id:");scanf("%d", &L->elem[L->length].id);//使用length来当数组下标printf("name:");scanf("%s", L->elem[L->length].name);//name是字符数组不需要取地址符printf("phone:");scanf("%d", &L->elem[L->length].phone);L->length++;return 0;
}int deleteList(SqList* L)
{if (L->length == 0){printf("没有人员可以删除\n");return -1;}printf("请输入你想删除的名字:");char name[20];scanf("%s", name);for (int i = 0; i < L->length; i++){if (strcmp(name, L->elem[i].name) == 0)//字符串的比较{for (int j=i;j<L->length-1;j++){L->elem[j].id = L->elem[j + 1].id;L->elem[j].phone = L->elem[j + 1].phone;strcpy(L->elem[j].name, L->elem[j + 1].name);}printf("删除成功\n");L->length--;return 0;}}printf("删除失败\n");return 0;
}int SeekList(SqList* L)
{printf("请输入你想查找的名字:");char name[20];scanf("%s", name);for (int i = 0; i < L->length; i++){if (strcmp(name, L->elem[i].name) == 0)//字符串的比较{printf("%s的电话为:%d\n", L->elem[i].name,L->elem[i].phone);return 0;}}printf("未找到该人\n");return 0;
}int printList(SqList* L)
{if (L->length == 0){printf("没有元素\n");return 0;}for (int i = 0; i < L->length; i++){printf("id:%d\t",L->elem[i].id);printf("name:%s\t", L->elem[i].name);printf("phone:%d\n", L->elem[i].phone);}return 0;
}void menu()
{printf("1.添加人员信息\n");printf("2.删除人员信息\n");printf("3.查找人员信息\n");printf("4.显示所有人员信息\n");printf("5.退出\n");
}int main()
{SqList L;//定义顺序表initList(&L);//初始化顺序表while (1){menu();printf("请输入你的选择:");int chose;scanf("%d", &chose);switch(chose){case 1:ListInsert(& L);break;case 2:deleteList(&L);break;case 3:SeekList(&L);break;case 4:printList(&L);break;default:printf("输入错误,重新输入\n");break;}}return 0;
}

http://www.xdnf.cn/news/8234.html

相关文章:

  • 【LINUX操作系统】线程池——线程部分综合运用并实现一个自己的线程池
  • Git使用说明
  • 调度关键路径里调整优先级导致hardlockup
  • AWS中创建ES集群(opensearch部署)
  • Laravel 连接 SQL Server 之 Linux 系统安装 unixODBC 和 Microsoft ODBC 驱动
  • Oracle查看SQL执行计划的方法
  • .NET外挂系列:7. harmony在高级调试中的一些实战案例
  • docker环境安装wlcn
  • upload-labs通关笔记-第20关 文件上传之杠点绕过
  • DeltaV SIS逻辑解算器艾默生SLS 1508
  • Linux 之 MTD 子系统框架
  • recurrent neural network(rnn)
  • C++(29):结构体
  • 并发编程之线程安全lock
  • 看八股有感
  • 进销存管理系统:Java+Vue,含源码及文档,集成采购、销售、库存管理,实现数据互通,提升运营效率
  • 常见排序算法详解及其复杂度分析
  • 【沉浸式解决问题】System.getProperty(“user.dir“)获取不到项目根目录
  • 多线程编程的典型使用场景
  • 【RocketMQ 生产者和消费者】- 生产者启动源码-启动流程(1)
  • 查看使用宿主机模式的Docker容器端口
  • 九、日志分析和系统故障排查
  • 【知识图谱】数据处理与数据存储
  • VTK—三维图像重建和剖切
  • 【博通芯片方案】调试指令详解版二(无线)
  • 高等数学-连续
  • 【RocketMQ 生产者和消费者】- 生产者启动源码-创建 MQClientInstance(2)
  • yarn 命令运行问题 bug
  • 催化燃烧型氢气传感器的响应速度和恢复速度如何?
  • os:进程与线程上