范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

C基础语法梳理数据结构丨顺序结构

  顺序栈(Sequence Stack)
  SqStack.cpp: /** * @author huihut * @E-mail:huihut@outlook.com * @version 创建时间:2016年9月9日 * 说明:本程序实现了一个顺序栈。 * 功能:有初始化、销毁、判断空、清空、入栈、出栈、取元素的操作。 */  #include "stdio.h" #include "stdlib.h" #include "malloc.h"  //5个常量定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1  //测试程序长度定义 #define LONGTH 5  //类型定义 typedef int Status; typedef int ElemType;  //顺序栈的类型 typedef struct { 	ElemType *elem; 	int top; 	int size; 	int increment; } SqSrack;  //初始化顺序栈 Status InitStack_Sq(SqSrack &S, int size, int inc) { 	S.elem = (ElemType *)malloc(size * sizeof(ElemType)); 	if (NULL == S.elem) return OVERFLOW; 	S.top = 0; 	S.size = size; 	S.increment = inc; 	return OK; }  //销毁顺序栈 Status DestroyStack_Sq(SqSrack &S) { 	free(S.elem); 	S.elem = NULL; 	return OK; }  //判断S是否空,若空则返回TRUE,否则返回FALSE Status StackEmpty_Sq(SqSrack S) { 	if (0 == S.top) return TRUE; 	return FALSE; }  //清空栈S void ClearStack_Sq(SqSrack &S) { 	if (0 == S.top) return; 	S.size = 0; 	S.top = 0; }  //元素e压入栈S Status Push_Sq(SqSrack &S, ElemType e) { 	ElemType *newbase; 	if (S.top >= S.size) { 		newbase = (ElemType *)realloc(S.elem, (S.size + S.increment) * sizeof(ElemType)); 		if (NULL == newbase) return OVERFLOW; 		S.elem = newbase; 		S.size += S.increment; 	} 	S.elem[S.top++] = e; 	return OK; }  //取栈S的栈顶元素,并用e返回 Status GetTop_Sq(SqSrack S, ElemType &e) { 	if (0 == S.top) return ERROR; 	e = S.elem[S.top - 1]; 	return e; }  //栈S的栈顶元素出栈,并用e返回 Status Pop_Sq(SqSrack &S, ElemType &e) { 	if (0 == S.top) return ERROR; 	e = S.elem[S.top - 1]; 	S.top--; 	return e; }  int main() { 	//定义栈S 	SqSrack S;  	//定义测量值 	int size, increment, i;  	//初始化测试值 	size = LONGTH; 	increment = LONGTH; 	ElemType e, eArray[LONGTH] = { 1, 2, 3, 4, 5 };  	//显示测试值 	printf("---【顺序栈】--- "); 	printf("栈S的size为:%d 栈S的increment为:%d ", size, increment); 	printf("待测试元素为: "); 	for (i = 0; i < LONGTH; i++) { 		printf("%d	", eArray[i]); 	} 	printf(" ");  	//初始化顺序栈 	if (!InitStack_Sq(S, size, increment)) { 		printf("初始化顺序栈失败 "); 		exit(0); 	} 	printf("已初始化顺序栈 ");  	//入栈 	for (i = 0; i < S.size; i++) { 		if (!Push_Sq(S, eArray[i])) { 			printf("%d入栈失败 ", eArray[i]); 			exit(0); 		} 	} 	printf("已入栈 ");  	//判断非空 	if (StackEmpty_Sq(S)) printf("S栈为空 "); 	else printf("S栈非空 ");  	//取栈S的栈顶元素     	printf("栈S的栈顶元素为: "); 	printf("%d ", GetTop_Sq(S, e));  	//栈S元素出栈 	printf("栈S元素出栈为: "); 	for (i = 0, e = 0; i < S.size; i++) { 		printf("%d	", Pop_Sq(S, e)); 	} 	printf(" ");  	//清空栈S 	ClearStack_Sq(S); 	printf("已清空栈S ");  	getchar(); 	return 0; }
  顺序栈数据结构和图片 typedef struct { 	ElemType *elem; 	int top; 	int size; 	int increment; } SqStack;
  队列(Sequence Queue)
  队列数据结构 typedef struct { 	ElemType * elem; 	int front; 	int rear; 	int maxSize; }SqQueue;
  非循环队列
  非循环队列图片
  SqQueue.rear++
  循环队列
  循环队列图片
  SqQueue.rear = (SqQueue.rear + 1) % SqQueue.maxSize顺序表(Sequence List)
  SqList.cpp: /** * @author huihut * @E-mail:huihut@outlook.com * @version 创建时间:2016年9月9日 * 说明:本程序实现了一个顺序表。 */  #include "stdio.h" #include "stdlib.h" #include "malloc.h"  //5个常量定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1  //测试程序长度定义 #define LONGTH 5  //类型定义 typedef int Status; typedef int ElemType;  //顺序栈的类型 typedef struct { 	ElemType *elem; 	int length; 	int size; 	int increment; } SqList;  //初始化顺序表L Status InitList_Sq(SqList &L, int size, int inc) { 	L.elem = (ElemType *)malloc(size * sizeof(ElemType)); 	if (NULL == L.elem) return OVERFLOW; 	L.length = 0; 	L.size = size; 	L.increment = inc; 	return OK; }  //销毁顺序表L Status DestroyList_Sq(SqList &L) { 	free(L.elem); 	L.elem = NULL; 	return OK; }  //将顺序表L清空 Status ClearList_Sq(SqList &L) { 	if (0 != L.length) L.length = 0; 	return OK; }  //若顺序表L为空表,则返回TRUE,否则FALSE Status ListEmpty_Sq(SqList L) { 	if (0 == L.length) return TRUE; 	return FALSE; }  //返回顺序表L中元素个数 int ListLength_Sq(SqList L) { 	return L.length; }  // 用e返回顺序表L中第i个元素的值 Status GetElem_Sq(SqList L, int i, ElemType &e) { 	e = L.elem[--i]; 	return OK; }   // 在顺序表L顺序查找元素e,成功时返回该元素在表中第一次出现的位置,否则返回 - 1 int Search_Sq(SqList L, ElemType e) { 	int i = 0; 	while (i < L.length && L.elem[i] != e) i++; 	if (i < L.length) return i; 	else return -1; }  //遍历调用 Status visit(ElemType e) { 	printf("%d	", e); 	return OK; }  //遍历顺序表L,依次对每个元素调用函数visit() Status ListTraverse_Sq(SqList L, Status(*visit)(ElemType e)) { 	if (0 == L.length) return ERROR; 	for (int i = 0; i < L.length; i++) { 		visit(L.elem[i]); 	} 	return OK; }  //将顺序表L中第i个元素赋值为e Status PutElem_Sq(SqList &L, int i, ElemType e) { 	if (i > L.length) return ERROR; 	e = L.elem[--i]; 	return OK;  }  //在顺序表L表尾添加元素e Status Append_Sq(SqList &L, ElemType e) { 	if (L.length >= L.size) return ERROR; 	L.elem[L.length] = e; 	L.length++; 	return OK; }  //删除顺序表L的表尾元素,并用参数e返回其值 Status DeleteLast_Sq(SqList &L, ElemType &e) { 	if (0 == L.length) return ERROR; 	e = L.elem[L.length - 1]; 	L.length--; 	return OK; }  int main() { 	//定义表L 	SqList L;  	//定义测量值 	int size, increment, i;  	//初始化测试值 	size = LONGTH; 	increment = LONGTH; 	ElemType e, eArray[LONGTH] = { 1, 2, 3, 4, 5 };  	//显示测试值 	printf("---【顺序栈】--- "); 	printf("表L的size为:%d 表L的increment为:%d ", size, increment); 	printf("待测试元素为: "); 	for (i = 0; i < LONGTH; i++) { 		printf("%d	", eArray[i]); 	} 	printf(" ");  	//初始化顺序表 	if (!InitList_Sq(L, size, increment)) { 		printf("初始化顺序表失败 "); 		exit(0); 	} 	printf("已初始化顺序表 ");  	//判空 	if (TRUE == ListEmpty_Sq(L)) printf("此表为空表 "); 	else printf("此表不是空表 ");  	//入表 	printf("将待测元素入表: "); 	for (i = 0; i < LONGTH; i++) { 		if (ERROR == Append_Sq(L, eArray[i])) printf("入表失败 ");; 	} 	printf("入表成功 ");  	//遍历顺序表L 	printf("此时表内元素为: "); 	ListTraverse_Sq(L, visit);  	//出表 	printf(" 将表尾元素入表到e: "); 	if (ERROR == DeleteLast_Sq(L, e)) printf("出表失败 "); 	printf("出表成功 出表元素为%d ", e);  	//遍历顺序表L 	printf("此时表内元素为: "); 	ListTraverse_Sq(L, visit);  	//销毁顺序表 	printf(" 销毁顺序表 "); 	if (OK == DestroyList_Sq(L)) printf("销毁成功 "); 	else printf("销毁失败 ");  	getchar(); 	return 0; }
  顺序表数据结构和图片 typedef struct { 	ElemType *elem; 	int length; 	int size; 	int increment; } SqList;
  今天的分享就到这里了,大家要好好学C++哟~
  写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
  编程学习视频分享:
  整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
  欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
  对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

ADA艾达币值得投资吗?这个币是一匹黑马,以前并没有注意过。也是在市值排名榜中,不知不觉发现它已经排名第六。艾达币和以太坊一样是一个智能合约平台也是同属于公有基础链之一。它的最大发行量是450亿枚,目前的爆料称全新Macmini即将发布性能更强并采用全新设计上周,有消息称苹果将在今年秋天发布经过重新设计的14英寸和16英寸MacBookPro。预计此新款MacBookPro将采用miniLED技术,并搭载苹果自研芯片M1X。此外,其还激光电视为什么不值得买啊?激光电视不是不值得购买,而是当前并不是最佳的购买时机,这里我聊聊我过往买电视的经历,或许你能明白。从液晶和等离子电视之争看激光电视在液晶电视没有完全普及之前,市场上有两种技术的电视三星GalaxyM525G完整规格曝光据外媒GSMArena报道,三星GalaxyM525G手机的完整规格在今日曝光,根据爆料者IshanAgarwal透露,该手机将搭载骁龙778G芯片,采用6。7英寸全高清显示屏。G屏下相机1。08亿像素,外加骁龙888Plus芯片,OPPOFindX4给力十足下半年才刚刚开始很多手机厂商已经开始全面发力,如小米发布了断更已久的小米MIX4,荣耀发布了旗下最高端的荣耀Magic3,vivo的子品牌iQOO开始向高端市场进军发布了iQOO8微信新增重量级功能连续发送暗号才能打开前段时间,微信在安卓iOS双平台更新,终于带来了大家期待了几年的更换铃声功能,提供了更加丰富的个性化选项,甚至还推出了类似彩铃的功能,一时间饱受吐槽的微信竟然备受好评。不知道是不是阿里云回应用户注册信息泄露事件品玩8月23日讯,据第一财经日报报道,阿里云今天对阿里云将用户留存的注册信息泄露给第三方合作伙伴一事进行回应。阿里云表示,根据自查,该投诉事件应为2019年双11前后,阿里云一名电荣耀Magic3上手时隔三年,这就是终极大招?2018年,荣耀首款Magic旗舰正式亮相,不知道你们怎么想,至少在我看来,Magic确实能给我一种极具黑科技和高端范的感觉。但因为种种原因,荣耀Magic迭代到2代之后就一直没有外观大变样,预装鸿蒙OS2爆料称新版华为MatePad11平板即将上市众所周知,上月6日,在华为举办的新品发布会上,官方正式发布了新一代平板电脑华为MatePad11。日前,有数码博主再次爆料,又一款新版华为MatePad11即将上市,根据爆出的海报realme归国刚小米,却从做手机到做生态,抄起了小米作业?文AI财经社陈畅编辑杨洁realme推出了自己AIoT战略下的首款笔记本电脑。这家对于很多人而言还比较陌生的手机品牌,最近开始卖电脑了。realme(中文名真我)作为一家主打智能手Win11系统,应用商店是Win10的怎么办?系统应用商店不对处理方法从Win11公布至今,早已有很多用户升级了Win11系统,并且升级到Win11预览版的最新版本。可是即便那样,用户打开自己电脑上中自带的应用店铺却发觉它并沒有伴随着系统的升级变为W
大数据或将消亡?痛点在哪里?全世界都知道大数据是怎么回事埃森哲公司的大数据的成功研究发现,79的企业高管表示,不采用大数据的公司将失去市场实力,可能面临倒闭。大数据被广泛视为所有连接到互联网的组织的生命线。此一个支付处理公司卖了430亿美元,这究竟是干什么的?美国金融科技服务商富达(FIS)以430亿美元价格并购英国支付处理公司WorldPay,这笔交易将成为数据处理支付行业最大的一笔。消息发布后,WorldPay股价上涨了近10,富达推荐4款非常好用的黑科技网站,每一款都不容错过V2EX一个知名技术创意网站V2EX是一个知名技术创意网站,由设计师程序员及有创意的人参与的社区。它基于兴趣将用户创建的内容组织分类成不同节点,网站以内容的活跃程度决定在首页排序的AndroidQ体验这5个改动值得关注!数码新资讯?互联新事件?手机快测评?二十年专业老司机,等你上车,点击右上角关注泡泡网即可每年安卓都会对系统进行一次大更新,今年也不例外,3月14日谷歌正式发布了今年新的Androi史上最强?库克也玩微博新品预热发布会!破天荒了昨日深夜,库克在新浪发布微博史上最强。Betterthanever。,并配备了一张iMac的图片,该款iMac苹果于昨日进行了更新,现已在苹果官网中出售。苹果此次共更新两种型号的i追赶微软HoloLensMagicLeap,鲲游国内首发量产型全息光栅AR光波导3月20日,2019慕尼黑上海光博会电子展在上海新国际博览中心同时开幕。作为亚洲激光光学光电等领域的行业盛会,本次展会涵盖半导体传感器技术微纳米系统无源元件及连接器等技术,吸引了全国美社交电商美店开门红九天销售3。39亿元,参团人数68万近年来,传统电商正在向社交电商转变,尤其是向组团电商拼购电商转变,以社交化的用户运营来获客和留存,开拓更广泛的市场。2月27日,国美全新社交电商产品国美美店发布,标志着国美正式进军明星们用什么手机据说回收宝官方发布了一个明星使用手机排行榜,手机型号采集来自于微博,当然这其中也包含了明星代言的手机品牌。许佳琪张艺兴使用的是iPhoneX,虞书欣刘雨昕王俊凯使用的是OPPORe兄弟打印机和联想打印机提示墨粉用尽的清零解决办法正在使用兄弟和联想打印机的小伙伴们是不是经常遇到,打印机提示墨粉已用尽,请尽快更换墨粉盒。遇到这个问题怎么办呢?我把我的清零办法分享出来,送给有需要的小伙伴们。这个办法我用过许多次表面晶格工程通过三维碘化铅钙钛矿用于高性能钙钛矿太阳能电池有机金属卤化物钙钛矿太阳能电池(PSCs)由于其快速提高的能量转换效率(PCE)从不足4到超过25,已经引起了科学界和工业界的广泛关注。制备钙钛矿薄膜通常采用溶液法。由于在溶液处理哈勃太空望远镜观测到系外类木巨行星形成美国科学家借助哈勃太空望远镜,直接观察到太阳系外类木行星御夫座ABAurigaeb的形成过程。他们指出,这一剧烈过程支持一个长期以来备受争论的有关木星形成的理论星盘不稳定性,即巨行