C/C++线性表的实现

2023-10-27

新手出路,多多请教!!

线性表的定义:

线性表(linear list)是最基本、最简单、最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的,但这只适用大部分线性表,而不是全部。在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。

线性表的功能以下:

======1.输入数据======
======2.输出数据======
======3.插入数据======
======4.查找指定位置的元素======
======5.删除指定位置的元素======
======6.增加线性表======
======7.线性表合并=======
======8.清空线性表=======
======0.退出程序======

使用typedef struct定义一个线性表sqlist,代码如下:(详情见代码解释)

#define SIZE 100
typedef int ElemType;
typedef int status;

typedef struct sqlist {
	ElemType* elem;//存放线性表地址
	string name;//给线性表一个名字,便于后续有需要输出时利用
	int length;	   //存放线性表长度
	int listsize;  //存放线性表的个数
}SqList;//定义线性表

其中的SqList时为了在以下的操作中使用。

定义线性表后,我们需要对线性表初始化:

该过程中用到函数malloc,他的用法在C中C++是有差异的,使用它需要头文件的#include<malloc.h>

(详情见代码解释)

status IniList(SqList* L,string name){
	L->elem = (int*)malloc(SIZE*sizeof(ElemType));//为L争取动态存储空间
	L->length = 0;//初始化是将线性表的长度设置为0
	L->listsize = SIZE;//表格的最长长度为100,若要修改见顶部
	L->name = name;//给线性表一个名字
	return 1;//正常退出
}//线性表的初始化

在main()中先初始化三个线性表:IniList(&表格名,string name)

IniList(&L1,"1");
IniList(&L2,"2");
IniList(&L_Merge,"_Merge");//三个表格初始化,然后给表L1赋值

线性表的赋值:(详情见代码解释)input(SqList* L,int Num),其中的Num是输入的数的个数

void input(SqList* L,int Num){
	L->length = Num;//将输入的数据的个数作为线性表的长度
	for (int i = 0; i < L->length; i++)
	{
		scanf_s("%d", &L->elem[i]);//给线性表赋值
	}
	printf("输入完毕!\n");
}//给线性表赋值

线性表的输出:(详情见代码解释)Display(SqList* L)

void Display(SqList* L){
	if (L->length == 0) {
		return;
	}//如果线性表为空的话,直接退出
	cout << "L" << L->name << ":";
	for (int i = 0; i < L->length; i++) {
		printf("%d", L->elem[i]);
		printf(" ");
	}
	printf("\n");
}//打印线性表

在线性表中插入值的操作:使用ListInsert(SqList*L),(详情见代码解释)

status ListInsert(SqList* L) {
	int pos;//定义position的缩写pos,为插入数据的位置
	ElemType* p, * p1, * p2,value;
	if (L->length == 0) {
		printf("\n此表为空,无法插入数据,插入数据程序已退出!!!\n");
		return 0;
	}//判断插入数据的表格是否为空,空的话退出
	printf("\n请输入要插入的位置:");
	scanf_s("%d", &pos); 
	if (pos<1 || pos>L->length+1) {
		printf("插入位置信息错误!\n");
		return 0;
	}//判断插入值的位置是否合理,不合理则推出
	printf("请输入要插入的元素:");
	scanf_s("%d", &value);
	if (L->length >= L->listsize) {
		p =(int*)realloc(L->elem, sizeof(ElemType) * (L->listsize + 10));
		if (!p) return 0;
		L->elem = p;//新地址赋给L
		L->listsize += 10;//大小应进行相应调整改变
	} //空间不足时,扩充容量,这个if条件语句一般用不上,可以省略
	p1 = &L->elem[pos - 1];
	for (p2 = &L->elem[L->length - 1]; p2 >= p1; p2--) {
		*(p2 + 1) = *(p2);//向后移动一个单位
	}
	L->elem[pos - 1] = value;
	L->length++;
	return 1;	
}//插入元素

线性表中删除指定位置的值操作:(详情见代码解释)DeleteDate(SqList* L)

status DeleteDate(SqList* L) {
	int pos_delete;//定义删除数据的位置
	while (true) {
		printf("请输入你要删除的数据的位置(该表的长度为:%d):", L->length);
		cin >> pos_delete;
		if (pos_delete-1<0 || pos_delete-1>=L->length) {
			printf("\n输入的位置有误!请重新输入!!\n");
			continue;
		}
		else break;
	}//判断删除数据的位置是否合理,合理则退出while循环结构
	int date_delete = L->elem[pos_delete-1];//由于角标是从0开始的,所以我们需要pos_delete-1来进行操作
	for (int i = pos_delete-1; i <= L->length-1; i++) {
		L->elem[i] = L->elem[i + 1];
	}//由于角标是从0开始的,所以我们需要pos_delete-1来进行操作
	L->length = L->length - 1;
	printf("已删除数据:%d\n", date_delete);
	return 1;
}//删除数据

在线性表中查找数据的操作如下:(详情看代码解析)SearchDate(SqList*L)

status SearchDate(SqList*L){
	int pos_search;//定义查找的位置
	while (true) {
		printf("请输入你要查找的位置(该表的长度为:%d):", L->length);
		cin >> pos_search;
		if (pos_search-1 < 0 || pos_search-1 >= L->length) {
			printf("\n输入的位置有误!请重新输入!!\n");
			continue;
		}
		else break;
	}//判断查找数据的位置是否合理,合理则退出while循环结构
	printf("这个值是:%d\n", L->elem[pos_search-1]);//由于角标是从0开始的,所以我们需要pos_search-1来输出
	return 1;
}//查找数据

线性表中的数据添加线性表的操作:(详情看代码解析) AddList(SqList *L,int Num)    其中的Num是输入的数的个数

status AddList(SqList *L,int Num) {
	L->length = Num;//增加线性表,该线性表的长度=输入值的个数
	for (int i = 0; i < L->length; i++){
		scanf_s("%d", &L->elem[i]);
	}
	printf("输入完毕!\n");
	return 1;
}//增加数据

线性表的合并:ListMerge(SqList*表1, SqList* 表2, SqList* 合并表名)(详情看代码)

status ListMerge(SqList* L1, SqList* L2, SqList* L_Merge) {
	L_Merge->length = L1->length + L2->length;//将要合并的线性表的长度相加,然后赋值给合并表格的长度
	int pos1 = L1->length, pos2 = L2->length;//定义pos1和pos2是为了一下便于赋值给合并表
	for (int i = 0; i < L1->length; i++) {
		L_Merge->elem[i] = L1->elem[i];
	}
	for (int i = L1->length, k = 0; k < L2->length; k++, i++) {
		L_Merge->elem[i] = L2->elem[k];
	}/*此for循环的条件体比较关键,int i = L1->length这条语句是使用了表L1的长度
	 由于角标是从0开始的,所以这里直接利用L1的长度作为角标来开始取值*/
	IniList(L1,"1");
	IniList(L2,"2");//合并表格以后,将两表初始化(相当于销毁线性表)
	printf("合并完毕!\n");
	return 1;
}//线性表合并

销毁线性表的方法:DeleteList(SqList*表1, SqList* 表2, SqList* 表3)

status DeleteList(SqList* L1, SqList* L2, SqList* L_Merge) {
	IniList(L1,"1");
	IniList(L2,"2");
	IniList(L_Merge,"_Merge");
	printf("销毁线性表完毕!\n");
	return 1;
}//销毁线性表,其本质是将线性表重新初始化,此时每个表格的长度皆为0,故已销毁

main()函数主体代码:

int main(){
	SqList L1, L2, L_Merge;//定义三个表格
	string answer;
	int i=1;
	while (true) {
	start:
		printf("===================================\n");
		printf("======1.输入数据======\n");//input
		printf("======2.输出数据======\n");//Display
		printf("======3.插入数据======\n");//ListInsert
		printf("======4.查找指定位置的元素======\n");//SearchDate
		printf("======5.删除指定位置的元素======\n");//DeleteDate
		printf("======6.增加线性表======\n");//AddList
		printf("======7.线性表合并=======\n");//Union
		printf("======8.清空线性表=======\n");//IniList
		printf("======0.退出程序======\n");
		printf("===================================\n");
		printf("\n请输入相应数字进行此程序:");
		scanf_s("%d", &i);
		switch (i) {
		case 1://给线性表赋值
			IniList(&L1,"1");
			IniList(&L2,"2");
			IniList(&L_Merge,"_Merge");//三个表格初始化,然后给表L1赋值
			printf("请输入数的个数:");
			scanf_s("%d", &L1.length);
			input(&L1, L1.length); 
			system("pause");
			system("cls");
			goto start;
		case 2://查看表
			Display(&L1);
			if (&L2.length != 0) {
				printf("\n");
				Display(&L2);
			}
			if (&L_Merge.length != 0) {
				printf("\n");
				Display(&L_Merge);
			}
			system("pause");
			system("cls");
			goto start;
		case 3://插入元素
			printf("请输入你要插入数据的表格名称(L1,L2,L_Merge):");
			cin >> answer;
			if(answer=="L1")ListInsert(&L1);
			if (answer == "L2")ListInsert(&L2);
			if (answer == "L_Merge")ListInsert(&L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 4:
			printf("请输入查找哪个表格的数据(L1,L2,L_Merge;注意区分大小写):");
			cin >> answer;
			if (answer == "L1")SearchDate(&L1);
			if (answer == "L2")SearchDate(&L2);
			if (answer == "L_Merge")SearchDate(&L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 5:
			printf("请输入你要删除哪个表格中的数据(L1,L2,L_Merge;注意区分大小写):");
			cin >> answer;
			if (answer == "L1")DeleteDate(&L1);
			if (answer == "L2")DeleteDate(&L2);
			if (answer == "L_Merge")DeleteDate(&L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 6://增加线性表
			printf("请输入数的个数:");
			scanf_s("%d", &L2.length);
			AddList(&L2, L2.length);
			system("pause");
			system("cls");
			goto start;
		case 7:
			ListMerge(&L1, &L2, &L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 8:
			IniList(&L1, "1");
			IniList(&L2, "2");
			IniList(&L_Merge, "_Merge");
			system("pause");
			system("cls");
			goto start;
		case 0:
			printf("确定退出程序吗?(yes or no):");
			cin >> answer;
			if (answer == "yes"||answer=="YES")exit(0);
			if (answer == "no" || answer == "NO") {
				system("pause");
				system("cls");
				goto start;
			}
		}
	}
	return 0;
}

完整代码:

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

#define SIZE 100
typedef int ElemType;
typedef int status;

typedef struct sqlist {
	ElemType* elem;//存放线性表地址
	string name;//给线性表一个名字,便于后续有需要输出时利用
	int length;	   //存放线性表长度
	int listsize;  //存放线性表的个数
}SqList;//定义线性表
status IniList(SqList* L,string name){
	L->elem = (int*)malloc(SIZE*sizeof(ElemType));//为L争取动态存储空间
	L->length = 0;//初始化是将线性表的长度设置为0
	L->listsize = SIZE;//表格的最长长度为100,若要修改见顶部
	L->name = name;//给线性表一个名字
	return 1;//正常退出
}//线性表的初始化
void input(SqList* L,int Num){
	L->length = Num;//将输入的数据的个数作为线性表的长度
	for (int i = 0; i < L->length; i++)
	{
		scanf_s("%d", &L->elem[i]);//给线性表赋值
	}
	printf("输入完毕!\n");
}//给线性表赋值
void Display(SqList* L){
	if (L->length == 0) {
		return;
	}//如果线性表为空的话,直接退出
	cout << "L" << L->name << ":";
	for (int i = 0; i < L->length; i++) {
		printf("%d", L->elem[i]);
		printf(" ");
	}
	printf("\n");
}//打印线性表
status ListInsert(SqList* L) {
	int pos;//定义position的缩写pos,为插入数据的位置
	ElemType* p, * p1, * p2,value;
	if (L->length == 0) {
		printf("\n此表为空,无法插入数据,插入数据程序已退出!!!\n");
		return 0;
	}//判断插入数据的表格是否为空,空的话退出
	printf("\n请输入要插入的位置:");
	scanf_s("%d", &pos); 
	if (pos<1 || pos>L->length+1) {
		printf("插入位置信息错误!\n");
		return 0;
	}//判断插入值的位置是否合理,不合理则推出
	printf("请输入要插入的元素:");
	scanf_s("%d", &value);
	if (L->length >= L->listsize) {
		p =(int*)realloc(L->elem, sizeof(ElemType) * (L->listsize + 10));
		if (!p) return 0;
		L->elem = p;//新地址赋给L
		L->listsize += 10;//大小应进行相应调整改变
	} //空间不足时,扩充容量,这个if条件语句一般用不上,可以省略
	p1 = &L->elem[pos - 1];
	for (p2 = &L->elem[L->length - 1]; p2 >= p1; p2--) {
		*(p2 + 1) = *(p2);//向后移动一个单位
	}
	L->elem[pos - 1] = value;
	L->length++;
	return 1;	
}//插入元素
status AddList(SqList *L,int Num) {
	L->length = Num;//增加线性表,该线性表的长度=输入值的个数
	for (int i = 0; i < L->length; i++){
		scanf_s("%d", &L->elem[i]);
	}
	printf("输入完毕!\n");
	return 1;
}//增加数据
status SearchDate(SqList*L){
	int pos_search;//定义查找的位置
	while (true) {
		printf("请输入你要查找的位置(该表的长度为:%d):", L->length);
		cin >> pos_search;
		if (pos_search-1 < 0 || pos_search-1 >= L->length) {
			printf("\n输入的位置有误!请重新输入!!\n");
			continue;
		}
		else break;
	}//判断查找数据的位置是否合理,合理则退出while循环结构
	printf("这个值是:%d\n", L->elem[pos_search-1]);//由于角标是从0开始的,所以我们需要pos_search-1来输出
	return 1;
}//查找数据
status DeleteDate(SqList* L) {
	int pos_delete;//定义删除数据的位置
	while (true) {
		printf("请输入你要删除的数据的位置(该表的长度为:%d):", L->length);
		cin >> pos_delete;
		if (pos_delete-1<0 || pos_delete-1>=L->length) {
			printf("\n输入的位置有误!请重新输入!!\n");
			continue;
		}
		else break;
	}//判断删除数据的位置是否合理,合理则退出while循环结构
	int date_delete = L->elem[pos_delete-1];//由于角标是从0开始的,所以我们需要pos_delete-1来进行操作
	for (int i = pos_delete-1; i <= L->length-1; i++) {
		L->elem[i] = L->elem[i + 1];
	}//由于角标是从0开始的,所以我们需要pos_delete-1来进行操作
	L->length = L->length - 1;
	printf("已删除数据:%d\n", date_delete);
	return 1;
}//删除数据
status ListMerge(SqList* L1, SqList* L2, SqList* L_Merge) {
	L_Merge->length = L1->length + L2->length;//将要合并的线性表的长度相加,然后赋值给合并表格的长度
	int pos1 = L1->length, pos2 = L2->length;//定义pos1和pos2是为了一下便于赋值给合并表
	for (int i = 0; i < L1->length; i++) {
		L_Merge->elem[i] = L1->elem[i];
	}
	for (int i = L1->length, k = 0; k < L2->length; k++, i++) {
		L_Merge->elem[i] = L2->elem[k];
	}/*此for循环的条件体比较关键,int i = L1->length这条语句是使用了表L1的长度
	 由于角标是从0开始的,所以这里直接利用L1的长度作为角标来开始取值*/
	IniList(L1,"1");
	IniList(L2,"2");//合并表格以后,将两表初始化(相当于销毁线性表)
	printf("合并完毕!\n");
	return 1;
}//线性表合并
status DeleteList(SqList* L1, SqList* L2, SqList* L_Merge) {
	IniList(L1,"1");
	IniList(L2,"2");
	IniList(L_Merge,"_Merge");
	printf("销毁线性表完毕!\n");
	return 1;
}//销毁线性表,其本质是将线性表重新初始化,此时每个表格的长度皆为0,故已销毁
int main(){
	SqList L1, L2, L_Merge;//定义三个表格
	string answer;
	int i=1;
	while (true) {
	start:
		printf("===================================\n");
		printf("======1.输入数据======\n");//input
		printf("======2.输出数据======\n");//Display
		printf("======3.插入数据======\n");//ListInsert
		printf("======4.查找指定位置的元素======\n");//SearchDate
		printf("======5.删除指定位置的元素======\n");//DeleteDate
		printf("======6.增加线性表======\n");//AddList
		printf("======7.线性表合并=======\n");//Union
		printf("======8.清空线性表=======\n");//IniList
		printf("======0.退出程序======\n");
		printf("===================================\n");
		printf("\n请输入相应数字进行此程序:");
		scanf_s("%d", &i);
		switch (i) {
		case 1://给线性表赋值
			IniList(&L1,"1");
			IniList(&L2,"2");
			IniList(&L_Merge,"_Merge");//三个表格初始化,然后给表L1赋值
			printf("请输入数的个数:");
			scanf_s("%d", &L1.length);
			input(&L1, L1.length); 
			system("pause");
			system("cls");
			goto start;
		case 2://查看表
			Display(&L1);
			if (&L2.length != 0) {
				printf("\n");
				Display(&L2);
			}
			if (&L_Merge.length != 0) {
				printf("\n");
				Display(&L_Merge);
			}
			system("pause");
			system("cls");
			goto start;
		case 3://插入元素
			printf("请输入你要插入数据的表格名称(L1,L2,L_Merge):");
			cin >> answer;
			if(answer=="L1")ListInsert(&L1);
			if (answer == "L2")ListInsert(&L2);
			if (answer == "L_Merge")ListInsert(&L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 4:
			printf("请输入查找哪个表格的数据(L1,L2,L_Merge;注意区分大小写):");
			cin >> answer;
			if (answer == "L1")SearchDate(&L1);
			if (answer == "L2")SearchDate(&L2);
			if (answer == "L_Merge")SearchDate(&L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 5:
			printf("请输入你要删除哪个表格中的数据(L1,L2,L_Merge;注意区分大小写):");
			cin >> answer;
			if (answer == "L1")DeleteDate(&L1);
			if (answer == "L2")DeleteDate(&L2);
			if (answer == "L_Merge")DeleteDate(&L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 6://增加线性表
			printf("请输入数的个数:");
			scanf_s("%d", &L2.length);
			AddList(&L2, L2.length);
			system("pause");
			system("cls");
			goto start;
		case 7:
			ListMerge(&L1, &L2, &L_Merge);
			system("pause");
			system("cls");
			goto start;
		case 8:
			IniList(&L1, "1");
			IniList(&L2, "2");
			IniList(&L_Merge, "_Merge");
			system("pause");
			system("cls");
			goto start;
		case 0:
			printf("确定退出程序吗?(yes or no):");
			cin >> answer;
			if (answer == "yes"||answer=="YES")exit(0);
			if (answer == "no" || answer == "NO") {
				system("pause");
				system("cls");
				goto start;
			}
		}
	}
	return 0;
}

一名来自北京印刷学院计科的学生

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++线性表的实现 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include

随机推荐

  • Qt(2):MOC文件解析

    在Qt下 从QObject派生的类都会生成moc 文件 1 比如现在有2个文件 qmyobject h和qmyobject cpp 它里面有一个类QMyObject 记为版本A cpp view plain copy print class
  • hadoop中的ssh无密码登录配置

    目标 在配置hadoop分布式安装过程中 需要配置ssh的无密码登录 在组建hadoop集群的时候 需要多台实体机进行通信 发送或者读取数据 namenode和datanode之间 就是借助ssh 在通信过程中如果需要操作人员频繁输入密码是
  • 域名服务器从k8s访问不稳定,使用云厂商托管K8S时容器域名解析注意事项

    云厂商托管 Kubernetes 服务的 Pod 域名解析注意事项 使用云厂家提供托管式Kubernetes Pod的域名解析参数 通过界面创建Pod的话 可能厂商界面没有开放dnsConfig配置 采用了一些默认值 在使用时候 需要了解清
  • 人工智能与伦理问题浅谈

    第一章 绪论 一 提出问题 人工智能 Artificial Intelligence 缩写为AI 一词 是在1956年的达特茅斯会议上被首次提出来的 作为一门新兴的交叉学科 人工智能在当今脑科学 认知科学飞速发展的基础下 被称为本世纪三大科
  • element中table组件使用多级表头后在点击事件中为变量赋值会出现抖动

    出现情况 一般出现在表头中设置了v if v if的表头在更新数据时自动重新计算一次宽高 解决方法 为表格设置doLayout方法 更新数据前重写表格样式 不在重新计算宽高 beforeUpdate this nextTick gt 在数据
  • springboot国际化配置中英文切换

    1 新建项目 第一步新建springboot项目 勾选web依赖 或者后面进入在pom xml中加入也可以 2 项目结构 项目pom xml
  • 今日笔记:关于Symbol(Symbol.iterator)的使用笔记

  • 【问题及解决】win11 vmware创建虚拟机之后电脑和虚拟机都变得特别卡

    由于之前用的是wsl ubuntu发现编译SDK一直失败 别人提示改用VMware创建虚拟机 所以在win上的这里 控制面板 程序 启用或关闭windows功能 关闭了原来勾选的 适用于Linux的Windows子系统 和 虚拟机平台 并且
  • python的一些技巧和知识点(二)

    书接上文 这篇再记录10条我觉得有用的 虽然没多少人看 但我相信还是会帮助到一部分人的 哪怕是个位数也好 此外 就当作自己的记录吧 没有看过第一篇的朋友点击这里 1 正确复制一个列表 假设有一个列表a 之后需要复制一份儿这个列表 新列表记作
  • 算法之路-------差分数组

    这里写目录标题 差分数组的由来 差分数组的具体使用 具体题目 差分数组的由来 针对数组中连续的大量数据进行修改的问题 如果我们对每个数据都进行依次修改 对于一些少量的数据的修改 例如 1 100这些的 修改的时候我们发现速度貌似还是很快的
  • ABB技术参考手册、RAPID指令、函数和数据类型

    地址 https download csdn net download weixin 47816096 87575468
  • 搭建DVWA漏洞环境靶场

    一 DVWA简介 DVWA是一款开源的渗透测试平台 包含Brute force 暴力破解 XSS CSRF SQL注入 文件上传与下载等漏洞 并分各个等级难度的测试环境 DVWA链接 网盘自取 链接 https pan baidu com
  • 妙借Git自带的OpenSSL生成RSA公私钥的.pem 文件

    大家好 我是神韵 是一个技术 生活博主 出文章目的主要是两个 一是好记忆不如烂笔头 记录总结中提高自己 二是希望我的文章可以帮到大家 欢迎来点赞打卡 你们的行动将是我无限的动力 本篇主题是 妙借Git自带的OpenSSL生成RSA公私钥的
  • 一分钟掌握数据库垂直拆分

    转自 2016 12 20 58沈剑 一 缘起 当数据库的数据量非常大时 水平切分和垂直拆分是两种常见的降低数据库大小 提升性能的方法 假设有用户表 user uid bigint name varchar 16 pass varchar
  • 好玩的 CSS - 40 个有趣的 CSS 网站

    好玩的 CSS 40 个有趣的 CSS 网站 基础学习 cssreference io CSS 参考书 chokcoco github io CSS Inspira CSS 灵感 www awwwards com sites zero UI
  • 【C/C++】g++ 与 gcc的区别

    博 主 米码收割机 技 能 C Python语言 公众号 测试开发自动化 获取源码 商业合作 荣 誉 阿里云博客专家博主 51CTO技术博主 专 注 专注主流机器人 人工智能等相关领域的开发 测试技术 C C g 与 gcc的区别 目录 C
  • 微信小程序的一键授权登录。

    微信小程序的授权登录 首先你需要知道微信小程序官网提供的授权登录流程 附上网址 官网流程图 分析得到 前端 即小程序端 需要做的事情 通过wx login 获取code值 通过后端提供的API接口 使用 wx request把code值发送
  • 栈的链式存储结构的简单实现

    上一篇博客我们进行了栈的顺序存储结构的简单实现 这一篇博客进行栈的链式存储结构的简单实现 一 链栈的定义 我们都知道栈有栈顶指针 链表有头指针 这两者是缺一不可的 所以在进行链栈的设计的时候 我们就把栈顶放在单链表的头部 从而方便我们的插入
  • sqli-labs POST (18-22)

    LESS 18 随手输入username和password 可以从回显中看到 当用户名密码正确时 会有如下回显 错误时只有一个 Your IP ADDRESS is 127 0 0 1 根据提示可知是user agent的http头注入 用
  • C/C++线性表的实现

    新手出路 多多请教 线性表的定义 线性表 linear list 是最基本 最简单 最常用的一种数据结构 线性表中数据元素之间的关系是一对一的关系 即除了第一个和最后一个数据元素之外 其它数据元素都是首尾相接的 但这只适用大部分线性表 而不