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

jsp做的个人网站301313龙虎榜

jsp做的个人网站,301313龙虎榜,学设计的网站,ps怎么做网站一.通讯录的创建 首先我们要理解的是通讯录本身就是以顺序表为底层的 只不过顺序表中的数组,这里我们是用结构体来替代,用来存储用户的信息 由于是通讯录的本质就是顺序表,所以顺序表的任何方法它都能套用 Contact.h: #pragma once #def…

一.通讯录的创建

首先我们要理解的是通讯录本身就是以顺序表为底层的

只不过顺序表中的数组,这里我们是用结构体来替代,用来存储用户的信息

由于是通讯录的本质就是顺序表,所以顺序表的任何方法它都能套用

Contact.h:

#pragma once
#define Name_MAX 20
#define Gender_MAX 20
#define Tel_MAX 20
#define ADDR_MAX 100//定义联系人数据 自定义结构体
//姓名 性别 年龄 电话 地址
typedef struct personInfo
{char name[Name_MAX];char gender[Gender_MAX];int age;char tel[Tel_MAX];char addr[ADDR_MAX];
}peoInfo;//重命名为peoInfo//把顺序表改个名字,叫做通讯录
//前置声明,用结构体SL没命名之前的声明
//SL是在结构体创建后才改的名
typedef struct SeqList Contact;//初始化
void ContactInit(Contact* con);//销毁
void ContactDesTroy(Contact*con);//添加数据
void ContactAdd(Contact* con);//删除
void ContactDel(Contact* con);//修改
void ContactModify(Contact* con);
//
//查找
void ContactFind(Contact* con);
//
//展示
void ContactShow(Contact* con);

SeqList.h:

这个是顺序表本身的运用代码的头文件

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"Contact.h"
#include<string.h>
//定义顺序表的结构//#define N 100
//
静态顺序表
//struct SeqList
//{
//	int arr[N];
//	int size;//有效数据个数
//};typedef peoInfo SLDataType;
//动态顺序表
typedef struct SeqList
{SLDataType* arr;int size; //有效数据个数int capacity; //空间大小
}SL;//typedef struct SeqList SL;//顺序表初始化
void SLInit(SL* ps);
//顺序表的销毁
void SLDestroy(SL* ps);
//void SLPrint(SL s);//头部插入删除 / 尾部插入删除
void SLPushBack(SL* ps, SLDataType x);
void SLPushFront(SL* ps, SLDataType x);void SLPopBack(SL* ps);
void SLPopFront(SL* ps);//指定位置之前插入/删除数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);//查找数据
//int SLFind(SL* ps, SLDataType x);

Contact.c:

#define _CRT_SECURE_NO_WARNINGS 1
#include"SeqList.h"
#include"Contact.h"void ContactInit(Contact* con)
{SLInit(con);
}void ContactDesTroy(Contact* con)
{SLDestroy(con);
}//添加数据
void ContactAdd(Contact* con)
{peoInfo info;printf("请输入联系人姓名:\n");scanf("%s", info.name);printf("请输入联系人性别:\n");scanf("%s", info.gender);printf("请输入联系人年龄:\n");scanf("%d", &info.age);printf("请输入联系人电话:\n");scanf("%s", info.tel);printf("请输入联系人地址:\n");scanf("%s", info.addr);//添加SLPushBack(con,info);
}//以名字为依据查找数据
int FindByName(Contact* con, char name[])
{for (int i = 0; i < con->size; i++){if (0 == strcmp(con->arr[i].name, name))return i;}return -1;
}//删除
void ContactDel(Contact* con)
{//删除的数据一定要存在才能删除//查找(名字为依据)(依据不固定)char name[Name_MAX];printf("请输入你要删除的联系人的名字:\n");scanf("%s", name);int find = FindByName(con, name);if (find < 0){printf("删除失败,联系人不存在\n");return;}SLErase(con, find);printf("删除成功\n");
}//展示
void ContactShow(Contact* con)
{printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");for (int i = 0; i < con->size; i++){printf("%3s %3s  %3d  %3s  %3s\n",con->arr[i].name,con->arr[i].gender,con->arr[i].age,con->arr[i].tel,con->arr[i].addr);}
}//修改
void ContactModify(Contact* con)
{char name[Name_MAX];printf("请输入你要修改的联系人的名字:\n");scanf("%s", name);int find = FindByName(con, name);if (find < 0){printf("修改失败,联系人不存在\n");return;}printf("请输入新的姓名:\n");scanf("%s", con->arr[find].name);printf("请输入新的性别:\n");scanf("%s", con->arr[find].gender);printf("请输入新的年龄:\n");scanf("%d", &con->arr[find].age);printf("请输入新的电话:\n");scanf("%s", con->arr[find].tel);printf("请输入新的住址:\n");scanf("%s", con->arr[find].addr);printf("修改成功!\n");
}//查找
void ContactFind(Contact* con)
{char name[Name_MAX];printf("请输入要查找的联系人姓名\n");scanf("%s", name);int find = FindByName(con, name);if (find < 0){printf("要查找的联系人数据不存在!\n");return;}// 姓名 性别 年龄 电话  地址// 11   11   11   11   11printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");printf("%3s   %3s   %3d   %3s   %3s\n", con->arr[find].gender,con->arr[find].age,con->arr[find].tel,con->arr[find].addr);
}

SeqList.c:

#define _CRT_SECURE_NO_WARNINGS 1
#include"SeqList.h"
void SLInit(SL* ps)
{ps->arr = NULL;ps->size = ps->capacity = 0;
}
//顺序表的销毁
void SLDestroy(SL* ps)
{if (ps->arr) //等价于  if(ps->arr != NULL){free(ps->arr);}ps->arr = NULL;ps->size = ps->capacity = 0;
}
void SLCheckCapacity(SL* ps)
{//插入数据之前先看空间够不够if (ps->capacity == ps->size){//申请空间//malloc calloc realloc  int arr[100] --->增容realloc//三目表达式int newCapacity = ps->capacity == 0 ? 4 : 2 * ps->capacity;SLDataType* tmp = (SLDataType*)realloc(ps->arr, newCapacity * sizeof(SLDataType));//要申请多大的空间if (tmp == NULL){perror("realloc fail!");exit(1);//直接退出程序,不再继续执行}//空间申请成功ps->arr = tmp;ps->capacity = newCapacity;}
}
//尾插
void SLPushBack(SL* ps, SLDataType x)
{温柔的解决方式//if (ps == NULL)//{//	return;//}assert(ps); //等价与assert(ps != NULL)//ps->arr[ps->size] = x;//++ps->size;SLCheckCapacity(ps);ps->arr[ps->size++] = x;
}
//头插
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);//先让顺序表中已有的数据整体往后挪动一位for (int i = ps->size; i > 0; i--){ps->arr[i] = ps->arr[i - 1];//arr[1] = arr[0]}ps->arr[0] = x;ps->size++;
}//void SLPrint(SL s)
//{
//	for (int i = 0; i < s.size; i++)
//	{
//		printf("%d ", s.arr[i]);
//	}
//	printf("\n");
//}
void SLPopBack(SL* ps)
{assert(ps);assert(ps->size);//顺序表不为空//ps->arr[ps->size - 1] = -1;--ps->size;
}
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size);//数据整体往前挪动一位for (int i = 0; i < ps->size - 1; i++){ps->arr[i] = ps->arr[i + 1]; //arr[size-2] = arr[size-1]}ps->size--;
}//指定位置之前添加
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);SLCheckCapacity(ps);for (int i = ps->size; i > pos; i--){ps->arr[i] = ps->arr[i - 1];}ps->arr[pos] = x;ps->size++;
}//删除指定位置的数据
void SLErase(SL* ps, int pos)
{assert(ps);assert(pos >= 0 && pos < ps->size);for (int i = pos; i < ps->size - 1; i++){ps->arr[i] = ps->arr[i + 1];}ps->size--;
}查找数据
//int SLFind(SL* ps, SLDataType x)
//{
//	assert(ps);
//	int i = 0;
//	for (int i =0; i < ps->size; i++)
//	{
//		if (ps->arr[i] == x)
//			return i;
//	}
//	return -1;
//}

add.c:

这个是代码运行的源文件

#define _CRT_SECURE_NO_WARNINGS 1
#include"SeqList.h"
#include"Contact.h"//void SLTest01()
//{
//	SL sl;
//	SLInit(&sl);
//	SLPushBack(&sl, 1);
//	SLPushBack(&sl, 2);
//	SLPushBack(&sl, 3);
//	SLPushBack(&sl, 4);
//	SLPrint(sl);//1 2 3 4
//
//	SLPushFront(&sl, 5);
//	SLPushFront(&sl, 6);
//
//	βɾ
//	SLPopBack(&sl);
//	SLPrint(sl);//1 2 3 
//	SLPopBack(&sl);
//	SLPrint(sl);
//	SLPopBack(&sl);
//	SLPrint(sl);
//	SLPopBack(&sl);
//	SLPrint(sl);
//	SLPopFront(&sl);
//	SLPrint(sl);
//	...........
//	SLDestroy(&sl);
//}
//
//void SLTest02()
//{
//	SL sl;
//	SLInit(&sl);
//
//
//	SLPushBack(&sl, 1);
//	SLPushBack(&sl, 2);
//	SLPushBack(&sl, 3);
//	SLPushBack(&sl, 4);
//
//
//	/*SLInsert(&sl, 0, 5);*/
//
//	/*SLErase(&sl, 0);*/
//	/*SLPrint(sl);
//	int find=SLFind(&sl, 4);
//	if (find< 0)
//		printf("没找到\n");
//	else
//		printf("找到了,下标是:%d\n",find);*/
//
//
//
//	SLDestroy(&sl);
//}void ContactTest01()
{Contact con;ContactInit(&con);ContactAdd(&con);ContactAdd(&con);ContactShow(&con);/*ContactDel(&con);*/ContactModify(&con);ContactShow(&con);ContactFind(&con);ContactDesTroy(&con);}//int main()
//{
//	/*SLTest01();*///SLTest02();//ContactTest01();
//	return 0;
//}int main()
{ContactTest01();
}

二.移除元素

代码详解:

int removeElement(int* nums, int numsSize, int val) {int str = 0 ;int dst = 0 ;while(str<numsSize){if(nums[str]==val){str++;}else{nums[dst++]=nums[str++];}}return dst;
}

tip:

此处使用双指针的方法,还可以使用新的数组进行替换,但是题目要求受限

三.合并两个有序数组

代码详解:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int l1 = m - 1;int l2 = n - 1;int l3 = m + n - 1;while(l1 >= 0 && l2 >= 0 ){if(nums1[l1]<nums2[l2]){nums1[l3--]=nums2[l2--];}else{nums1[l3--]=nums1[l1--];}}while(l2>=0){nums1[l3 -- ] = nums2[l2--];}
}

http://www.dtcms.com/wzjs/69912.html

相关文章:

  • 网站的开发方法怎么制作公司网站
  • 网站开发需解决的难题搜索引擎优化行业
  • 如何做美食的视频网站成免费crm软件有哪些优点
  • 网站建设报价套餐厦门关键词排名seo
  • 有哪些学校的网站做的好seo实战密码第三版pdf下载
  • 快站app官网下载企业课程培训
  • asp.net 网站数据库网络销售怎么样
  • 可以做3d电影网站网站运营及推广方案
  • 设计房子的软件appseo友情链接
  • 政府门户建设seo推广培训
  • 广南网站建设百度怎么发帖做推广
  • 红河州网站建设百度客服转人工
  • 温州网站开发培训seo网站优化培训怎么做
  • 网站建设好了怎么进行推广谷歌sem推广
  • 安庆建设机械网站互联网广告推广公司
  • 青海政府网站建设公司seo排名优化软件
  • 小米4路由器可以做网站嘛五种营销工具
  • 做网站版面西安seo王尘宇
  • 男女直接做网站口碑营销案例2021
  • wordpress 获得分类名称周口seo
  • 做网站找人长沙seo网络推广
  • 青岛网站建设¥青岛博采网络网络广告营销的典型案例
  • 网站怎么做三级的河北百度seo关键词
  • 潍坊住房和城乡建设部网站智慧营销系统平台
  • 台州做网站多少钱优化快速排名公司
  • 陕西建设技师学院网站专业网站优化推广
  • 网站建设人员工作要求重庆seo小潘大神
  • 做调查问卷的网站有什么祁阳seo
  • 有赞云 wordpress网站关键词如何优化上首页
  • 厦门 微网站制作百度用户服务中心电话