栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++串的堆,顺序创建

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++串的堆,顺序创建

程序设计的思想以及应该避免的错误都在代码中旁的注释中有标明,此程序适用于串的顺序(即普通的数组形式的创建)和堆创建,此外,此代码并不难,只是运用简单的数组的思想,希望对你有所帮助,最好,看明白后,自己别看,然后打出来,如果是照抄,希望最少抄两遍

//非常抱歉,由于程序在设计之初是本着开辟一个随机位置的数组进行编程的,但是在检验时发现此程序最大也就只能记录到127个字符,
//所以在程序中str类型的数组应该第一个都啥都没存,后期加了一个int型的数来存储,程序改了好几遍,不过不影响整体思维设计部分
//应该..应该这个版本是CSDN里堆顺序串最全的,但是依然有些许的小bug,但但....不出意外,你找不到我的bug,这个bug不影响程序运行
//但是对于空间有些许的浪费,时间不多,累了,有时间再来改 
#include//我发现个bug,捏码,数组怎么销毁,你能删除一个int型的数吗,这不是扯淡嘛,所以..我写的是主题是堆,但emmm.思想一样 
#include
#include
using namespace std;
#define MAX 255
typedef struct Str
{
	//另外请注意,因为第一位存储的并不是字符而是字符串的长度,所以后边的很多地方需要向后一位!!!请注意 
	char *ch;
	int len;//踏马的,忘了char也就只能存127这么大,擦擦擦擦擦擦,这牛马我不待改完,尼玛 
	//上边和下边其实没有什么区别,但利于销毁 
	//char ch[MAX+1];//若是用第一个位值的元素存储此串的长度,那么是肯定不必重新定义一个len的 
	//int len;
}Str; 
void menu(void);
void caidancaozuo(Str& str);
void StrAssign(Str& str);//初始化一个串,并且在一个串中加入一串连续的值就是让用户随便的输入一串字符
void StrEmpty(Str str);//判断是否为空,是否存在,最简单了 
void StrCopy(Str& str);//复制一个串 
void Strcat(Str& str);//在第一个串后加入一个串 
void Index(Str str);//检索到你想要查的某一个字符在此字符串中出现的地方,检索一串的emmm...下一个再写 
void insert(Str& str);//插入一个字符 
void Replace(Str& str);//替换一个字符 
void Clear(Str& str);//清空字符串 
void Destroy(Str& str);//销毁字符串 
void OutPut(Str str);//输出整个字符串 
void OutPutIndex(Str str);//输出你要从哪一个位置开始的后面的所有的字符串 
void OutLen(Str str);//输出字符串的长度 非常之easy 


int main(void)
{
	Str str;
    menu();
    caidancaozuo(str);
} 
void menu(void)       
{                      //我觉得我这个菜单写的不赖很经典,写前边了,哈哈哈哈哈
	char a01[] = "(1)创建顺序串";
	char a02[] = "(2)判断是否为空以及判断否存在";
	char a03[] = "(3) 复制一个串";
	char a04[] = "(4)第一个串后加入一个串(即追加,不过会这个,插入一段一定会) ";
	char a05[] = "(5)查找某个字符在串中的位置";
	char a06[] = "(6)插入一个字符";
	char a07[] = "(7)替换一个字符";
	char a08[] = "(8)清空字符串";
	char a09[] = "(9)销毁字符串";
	char a10[] = "(10)输出整个字符串";
	char a11[] = "(11)输出你要从哪一个位置开始的后面的所有的字符串";
	char a12[] = "(12)串的长度";
	char a13[] = "输入入任意不在前面菜单的数字将结束程序";
 
	printf("%-50s", a01);
	printf("%-50sn", a02);
	printf("%-50s", a03);
	printf("%-50sn", a04);
	printf("%-50s", a05);
	printf("%-50sn", a06);
	printf("%-50s", a07);
	printf("%-50sn", a08);
	printf("%-50s", a09);
	printf("%-50sn", a10);
	printf("%-50s", a11);
	printf("%-50sn", a12);
	printf("%-50sn", a13);
}
void caidancaozuo(Str& str)//再次自我感觉良好觉得这个自我调用也不赖,放前边了 
{
	cout << "请问你想选择哪个指令" << endl;
	int mingling;
	cin >> mingling;
	switch (mingling)
	{
	case 1:
	{
		StrAssign(str);
		caidancaozuo(str);
		break;
	}
	case 2:
	{
		StrEmpty(str);
		caidancaozuo(str);
		break;
	}
	case 3:
	{
		StrCopy(str);
		caidancaozuo(str);
		break;
	}
	case 4:
	{
		Strcat(str);
		caidancaozuo(str);
		break;
	}
	case 5:
	{
		Index(str);
		caidancaozuo(str);
		break;
	}
	case 6:
	{
		insert(str);
		caidancaozuo(str);
		break;
	}
	case 7:
	{
		Replace(str);
		caidancaozuo(str);
		break;
	}
	case 8:
	{
		Clear(str);
		caidancaozuo(str);
		break;
	}
	case 9:
	{
		Destroy(str);
		caidancaozuo(str);
		break;
	}
	case 10:
	{
		OutPut(str);
		caidancaozuo(str);
		break;
	}
	case 11:
		OutPutIndex(str); 
		caidancaozuo(str);
		break;
	case 12:
		OutLen(str);
		caidancaozuo(str);
		break;
	default:
		cout << "您已经决定退出此程序,程序即将退出" << endl;
		break;
	}
}
void StrAssign(Str& str)
{
	//内个啥 内个你输入空格就退出了嗷,空格后边的不算 
	str.ch=(char*)malloc(sizeof(char)*(MAX+1));
	str.len=0;//经实验得出结果s的值或许需设的特别大 
	cout<<"请输入一串字符(范围是1到254)"<>a;
	int b=0;//记录出现的次数 
	for(int i=1;str.ch[i]!='';i++)
	{
		if(str.ch[i]==a)
		{
			cout<<"您输入的"<>x;
	cout<<"请输入你要插入的字符是什么:";
	char a;
	cin>>a;
	str.len++;//一是插入后本身肯定会加一,二是有个需要你注意 
	int q=str.len;
	for(int i=q;i>x;i--)
	{
		str.ch[i+1]=str.ch[i];
	}
	str.ch[x+1]=a; 
	OutPut(str);
}
void Replace(Str& str)
{
	if(str.ch==NULL)
    {
    	cout<<"您未创建一个串,请先创建一个串"<>x;
	cout<<"请输入你想在把第"<>a;
	str.ch[x]=a;
}
void Clear(Str& str)
{if(str.ch==NULL)
    {
    	cout<<"您未创建一个串,请先创建一个串"<>x;
	int a=str.len;//!!! 
	if(x<0||x>a) 
	{
		cout<<"请输入在1至"<

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号