c/c++串的链式操作

news2024/11/22 22:27:11

文章目录

  • 1.链式串的定义
  • 2.初始化
  • 3.赋值为0
  • 4.赋值操作
  • 5.打印操作
  • 6.源码

  本篇博客中都是带头结点的串。

1.链式串的定义

  这里的数据域是4个字节,是为了节省空间。

typedef struct StringNode{
	char ch[4];   //按串长分配存储区,ch指向串的基地址
	struct StringNode* next;
} StringNode,*String;

2.初始化

bool StrInit(String &S)
{
	S = (StringNode*)malloc(sizeof(StringNode)); //开辟空间
	if (S == NULL)
		return false;
	S->next = NULL;
	return true;
}

在这里插入图片描述

3.赋值为0

  将数据域中的元素全部初始化为0

bool StrEmpty(String& S)
{
	for (int i = 0; i < 4; ++i)
	{
		S->ch[i] = 0;
	}
	return true;
}

在这里插入图片描述

4.赋值操作

String StrAssign(String &S)
{
	StringNode* s, * r = S; //r为表尾指针
	char e = 0;
	int i = 0;
	cout << "输入你要的字符串:";
	cin >> e;
	s = (StringNode*)malloc(sizeof(StringNode));
	StrEmpty(s);
	while (e != '0')
	{
		s->ch[i] = e;
		i++;
		if (i >= 4)
		{
			r->next = s;
			r = s;
			s = (StringNode*)malloc(sizeof(StringNode));
			StrEmpty(s);
			i = 0;
		}
		cout << "输入你要的字符串:";
		cin >> e;
	}
	r->next = s;
	r = s;
	r->next = NULL;
	return S;
}

5.打印操作

  当指针不指向空的时候,打印数据域。

void PrintString(String S)
{
	S = S->next;
	cout << "字符串:";
	while (S != NULL)
	{
		for (int i = 0; i < 4; i++)
		{
			cout << S->ch[i];
		}
		S = S->next;
	}
}

6.源码

#include<iostream>
using namespace std;
//定义串
typedef struct StringNode{
	char ch[4];   //按串长分配存储区,ch指向串的基地址
	struct StringNode* next;
} StringNode,*String;

//初始化
bool StrInit(String &S)
{
	S = (StringNode*)malloc(sizeof(StringNode)); //开辟空间
	if (S == NULL)
		return false;
	S->next = NULL;
	return true;
}

//赋值为0
bool StrEmpty(String& S)
{
	for (int i = 0; i < 4; ++i)
	{
		S->ch[i] = 0;
	}
	return true;
}

//赋值操作
String StrAssign(String &S)
{
	StringNode* s, * r = S; //r为表尾指针
	char e = 0;
	int i = 0;
	cout << "输入你要的字符串:";
	cin >> e;
	s = (StringNode*)malloc(sizeof(StringNode));
	StrEmpty(s);
	while (e != '0')
	{
		s->ch[i] = e;
		i++;
		if (i >= 4)
		{
			r->next = s;
			r = s;
			s = (StringNode*)malloc(sizeof(StringNode));
			StrEmpty(s);
			i = 0;
		}
		cout << "输入你要的字符串:";
		cin >> e;
	}
	r->next = s;
	r = s;
	r->next = NULL;
	return S;
}

//打印操作
void PrintString(String S)
{
	S = S->next;
	cout << "字符串:";
	while (S != NULL)
	{
		for (int i = 0; i < 4; i++)
		{
			cout << S->ch[i];
		}
		S = S->next;
	}
}

int main()
{
	String S;
	//初始化
	StrInit(S);

	//赋值操作
	StrAssign(S);

	//打印操作
	PrintString(S);
	return 0;
}

在这里插入图片描述

有帮助的话,点一个关注吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

史诗级详细离线更新centos系统的openssh,升级到9.3p1!!

离线更新openssh步骤 文章目录 前言一、openssh是什么?二、更新步骤 1.查看相关组件版本是否存在(代码包已全部打包)2.进行openssh离线更新总结(安装时可能出现的问题等)前言 对于可能很多人在离线更新openssh时都没找到一篇能解决实际问题的文章,那么今天它来了,请往下看…

安卓相对布局RelativeLayout

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"150dp"><TextViewandroid…

PostgreSql和Oracle的事务机制区别以及对程序的影响

前言 几年前IT信息产业的一些核心技术包括架构、产品以及生态都是国外制定&#xff0c;然而自从“遥遥领先”公司被制裁后&#xff0c;国家开始大力支持信息产业“新基建”&#xff0c;自2020年开始市场上涌现出了大量的国产化软件&#xff0c;就国产化数据库而言我所在的公司…

vue2+html2pdf下载PDF,PDF分页切割

问题: PDF下载下来后,文档内容被暴力分割。 解决方案: HTML <!-- 打印按钮 --> <el-button type="primary" size="small" class="el-icon-download right_btn" @click="downloadPDF">PDF</el-button><!-- …

Windows存储空间不足局域网文件共享 Dism备份系统空间不足

问题情景 在日常使用中难免遇到Windows的空间不足的情况&#xff0c;常用办法是清理垃圾释放空间&#xff0c;部分场景例如我们需要使用Dism备份完整系统&#xff0c;所以需要非常大的存储空间不够&#xff0c;如果空间不够什么才是最有效的方案呢&#xff1f; 我们假设身边没有…

字符串转换const char* , char*,QByteArray,QString,string相互转换,支持中文

文章目录 1.char * 与 const char * 的转换2.QByteArray 与 char* 的转换3.QString 与 QByteArray 的转换4.QString 与 string 的转换5.QString与const string 的转换6.QString 与 char* 的转换 在开发中&#xff0c;经常会遇到需要将数据类型进行转换的情况&#xff0c;下面依…

伪原创生成器手机版,移动端上写文章更方便!

伪原创生成器虽然不少&#xff0c;但我们大家见到最多的还是电脑使用版&#xff0c;然而提及到伪原创生成器手机版的资源却不是那么多&#xff0c;特别是对于现在手机端也成为了大家办公的一大途径&#xff0c;这主要也是因为手机的便携性&#xff0c;它可以做到让大家随时随地…

【图例】直观的感受MySQL事务的隔离级别分别解决了什么问题?以及如何查看和设置事务隔离级别!

目录 前言一、读未提交&#xff08;Read Uncommitted&#xff09;二、读已提交&#xff08;Read Committed&#xff09;三、可重复读&#xff08;Repeatable Read&#xff09;四、串行化&#xff08;Serializable&#xff09; 前言 在MySQL中&#xff0c;事务的隔离级别决定了…

如何本地搭建Emby影音管理服务并结合内网穿透实现远程访问本地影音库

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

UE4 C++ 结构体

先在UCLASS()前写入&#xff1a; USTRUCT(BlueprintType) struct FMyStruct //必须以"F"开头 {GENERATED_BODY() //必须添加“GENERATED_BODY()”UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "MyStruct1")int32 Health;UPROPERTY(EditAnywher…

【算法】拦截导弹(线性DP)

题目 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。 某天&#xff0c;雷达捕捉到敌国的导弹来袭。 由于该系…

04. 【Linux教程】安装 Linux 操作系统

通过前面的小节学习&#xff0c;我们已经对 Linux 操作系统有了简单的了解&#xff0c;同时也在 Windows 下安装了虚拟机软件 VMware &#xff0c;那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。 通过第一小节的学习我们知道 Linux 有很多的发行版本&#xf…

Unity 访问者模式(实例详解)

文章目录 实例1&#xff1a;简单的形状与统计访客实例2&#xff1a;游戏对象组件访问者实例4&#xff1a;Unity场景对象遍历与清理访客实例5&#xff1a;角色行为树访问者 访问者模式&#xff08;Visitor Pattern&#xff09;在Unity中主要用于封装对一个对象结构中各个元素的操…

用Audio2Face导出Unity面部动画

开始之前说句话&#xff0c;新年前最后一篇文章了 一定别轻易保存任何内容&#xff0c;尤其是程序员不要轻易Ctrl S 在A2F去往Unity的路上&#xff0c;还要经历特殊Blender&#xff0c;自己电脑中已下载好的可能不是很好使。 如果想查看UE相关的可以跳转到下边这两篇链接 1. …

Qt QWidget Loading界面并覆盖在其他控件上面

目录 一、效果图二、Loading三、使用 一、效果图 界面中有一个Label&#xff0c;一个Button 点击Buttion&#xff0c;显示Loading的界面&#xff0c;并覆盖到Label和Button上面 二、Loading loadingwidget.h #ifndef LOADINGWIDGET_H #define LOADINGWIDGET_H#include <…

曲线拟合、多项式拟合、最小二乘法

最近在做自车轨迹预测的工作&#xff0c;遇到 曲线拟合、多项式拟合、最小二乘法这些概念有点不清晰&#xff0c; 做一些概念区别的总结&#xff1a; 曲线拟合用于查找一系列数据点的“最佳拟合”线或曲线。 大多数情况下&#xff0c;曲线拟合将产生一个函数&#xff0c;可用于…

1.26模拟退火

模拟退火是爬山算法的一种&#xff0c;是搜索算法 初始阶段 即只有在每次更新方案时&#xff0c;才会使循环次数增加

Maven安装,学习笔记,详细整理maven的一些配置

Maven 1. 初识Maven 2. Maven概述 Maven模型介绍 Maven仓库介绍 Maven安装与配置 3. IDEA集成Maven 4. 依赖管理 01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后&#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师&#xff0c;后端 Web开发技术…

屈子祠镇黑鱼岭,不可移动文物预防性保护系统守遗珍

一、何止秦俑 秦陵苑囿青铜水禽等文物集中展出 文物保护&#xff0c;尤其是不可移动文物的保护&#xff0c;一直都是文化遗产的重要环节。湖南省汨罗市屈子祠镇双楚村黑鱼岭墓地&#xff0c;作为长江中游地区的重大考古发现&#xff0c;其商朝晚期的历史背景赋予其不可估量的历…

鸿蒙开发实战-运动app开发

主要开发内容 3.1 开发准备 想要实现以下功能的话&#xff0c;需要学习“Tabs”&#xff0c;“TabContent”&#xff0c;“Row”&#xff0c;“Column”&#xff0c;等等相关技术。 主页 静坐页面   除此之外&#xff0c;还需要先准备8张图标的图片以及应用开发所需要的图片…