数据结构代码联习随笔(顺序表到栈)

news/2026/1/23 20:18:36/文章来源:https://www.cnblogs.com/chengjiuxun/p/19523936

顺序表

#include<stdio.h>
#include<stdlib.h>
#define maxx 20
//结构体
typedef struct ArrayList {int* data;int s;
}Array;
//初始化一个空顺序表
void InitArray(Array* a){a->data = (int*)malloc(sizeof(int) * maxx);a->s = 0;
}
//末尾添加一个数据k
void Add(Array* a, int k) {if (a->s == maxx) {printf("该表已满\n");return;}a->data[a->s] = k;a->s++;
}
//在下标i位置插入数据k
void Insert(Array* a, int i, int k) {//判断表是否满if (a->s == maxx) {printf("该表已满\n");return;}if (i < 0 || i > a->s) {printf("插入下标%d非法(范围0~%d)!\n", i, a->s);return;}//倒着遍历for (int j = a->s; j >= i; j--) {a->data[j] = a->data[j-1];}//插入元素a->data[i] = k;//s+1a->s++;
}
int Find(Array* a, int k) {int i;for (i =0; i < a->s; i++) {if (a->data[i] == k)return i;}return -1;
}
void Delet(Array*a,int k) {int i = Find(a,k);if (i == -1) {printf("未有此数,无法删除\n");return;}for (int j =i+1; j < a->s; i++) {a->data[j - 1] = a->data[j];}a->s--;
}void Show(Array a) {//判断是否是空表if (a.s == 0) {printf("空表\n");return;}else{//正着遍历for (int i = 0; i < a.s; i++) {printf("%d", a.data[i]);}printf("\n");}
}
int main()
{Array a;InitArray(&a);Add(&a, 1);Add(&a, 8);Add(&a, 2);Add(&a, 7);Add(&a, 0);Show(a);Insert(&a, 1, 3);Insert(&a, 3, 5);Show(a);int i = Find(&a, 7);if (i == -1)printf("7不存在\n");elseprintf("数据7的位置是:%d\n", i);Delet(&a, 8);Show(a);return 0;
}

链表

#include<stdio.h>
#include<stdlib.h>
//带头结点的单链表L
typedef struct Node
{int data;//数据域struct Node*next;//指针区域
}Node, * LinkList;Node* InitLink()
{//声明头结点/*head 局部变量 在栈上 函数运行结束 自动回收 导致L为野指针Node head;head.next=NULL;return &head;*/Node* head = (Node*)malloc (sizeof(Node));head->next = NULL;return head;
}
/*先新建一个结点s,把数据k放到结点s的数据域中,然后把结点s插入到链表中
1.头插法:在头结点后面插入结点s。(1)s到指针域指向原首元结点。(2)头结点的指针域指向新结点s
特点:链表结点顺序与插入顺序相反
*/
LinkList Head_insert(LinkList L, int k)
{Node* s = (Node*)malloc(sizeof(Node));s->data = k;s->next = L->next;//头结点的指针域保存了首元结点的地址 因此首元结点的地址为L->next;	L->next = s;return L;
}
/*2.尾插法:在尾结点后面插入结点s。(1)先找到尾结点p (2)s的指针域等于尾结点的指针域(3)尾结点指向s*/
LinkList Rear_insert(LinkList L, int k)
{Node* s = (Node*)malloc(sizeof(Node));s->data = k;//找尾结点Node* p = L;//p指向头结点while (p->next != NULL) {p = p->next;}//p此时指向尾结点s->next = p->next;p->next = s;return L;
}
/*查找数据x所在的结点,能找到则返回结点的地址,否则返回NULL;*/
Node* Find(LinkList L, int x)
{//从首元结点开始,不能从头结点开始,头结点数据域的脏数据会有影响//首元结点不一定存在,先判空,再比较数据域Node* p = L->next;//指向首元结点while (p!=NULL && p->data!=x) {p = p->next;}//while循环停止的情况:p为空 x不存在//while循环停止的情况:p不为空 p->data==x x在结点p中return p;
}
/*3.在指定位置插入:在数据x之后插入k(1)找到x所在的结点p(2)s的指针域等于结点p的指针域(3)结点p指向s*/
LinkList Insert(LinkList L, int x, int k)
{Node* s = (Node*)malloc(sizeof(Node));//if(s==NULL)s->data = k;Node* p = Find(L, k);if (p == NULL) {printf("p不存在,无法插入\n");}else {s->next = p->next;p->next = s;}return L;
}
/*在链表中删除数据k
找到k所在的结点p及其上一个结点q
q的指针域指向p的下一个结点
释放p结点*/
LinkList Delete(LinkList L,int k)
{Node* q = L;//q指向头结点,找k的上一个结点while (q != L->next && q->data != k) {q = q->next;}//while循环停止的情况:q->next为空 k不存在//while循环停止的情况:q->next不为空 q->next->data==k k在结点q->next中if (q->next = NULL) {printf("%d不存在,无法删除",k);}else{//删除q->nextNode*p=q->next;q->next = q->next-> next;//q的指针域绕过q->next 指向q->next的下一个结点free(p);p=NULL;//防止p称为野指针}return L;
}
//LinkList Delete(LinkList L, int k)
//{
//	Node* p = L->next;//p指向首元结点
//	Node* q = L;//q指向头结点
//	while (p != NULL && p->data != k)
//	{
//		p = p->next;
//		q = q->next;
//	}
//	//while循环停止的情况:p为空 k不存在
//	//while循环停止的情况:p不为空 p->data==k k在结点p中
//	if (p == NULL)
//	{
//		printf("%d不存在,无法删除\n", k);
//	}
//	else
//	{//删除p
//		q->next = p->next;//q的指针域绕过p 指向p的下一个结点
//		free(p);
//		p = NULL;//防止p称为野指针
//	}
//	return L;
//}
//把链表遍历输出
void Printff(LinkList L)
{Node* p = L->next;if (p == NULL) {printf("空链表\n");return;}while (p != NULL) {printf("%d", p->data);p = p->next;}printf("\n");
}
int main()
{LinkList L = NULL;L = InitLink();//初始化,声明一个头结点 L指向该头结点L = Head_insert(L, 6);L = Head_insert(L, 7);L = Head_insert(L, 1);L = Head_insert(L, 8);Printff(L);L = Rear_insert(L, 4);L = Rear_insert(L, 9);L = Rear_insert(L, 10);Printff(L);L = Insert(L, 6, 19);L = Insert(L, 4, 12);Printff(L);L = Delete(L, 100);L = Delete(L, 4);Printff(L);return 0;
}

#include<stdio.h>
#include<stdlib.h>
#define maxx 10
//top初始化为0,top-1才是真正的栈顶数据
typedef struct
{int* data;int top;
}Stack;
Stack InitStack()
{Stack s;s.data = (Stack*)malloc(sizeof(Stack));s.top = 0;return s;
}
void Push(Stack* s, int k)
{if (s->top == maxx) {printf("栈满,无法入栈\n");}s->data[s->top] = k;s->top++;}
int IsEmpety(Stack* s)
{if (s->top == 0) {return 1;
}return 0;
}
void Pop(Stack* s)
{if (IsEmpety(s) == 1) {printf("栈空,无法出栈\n");return;}else {s->top--;}
}
int Get(Stack s)
{if (IsEmpety(&s)) {printf("栈空\n");return -1;}return s.data[s.top - 1];
}
int main()
{Stack s = InitStack();Push(&s, 1);Push(&s, 2);Push(&s, 3);Pop(&s);Pop(&s);Pop(&s);printf("%d\n", Get(s));return 0;
}

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

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

相关文章

工信部等五部委认证:道可云AI元宇宙漫游打造智慧文博新体验

近日&#xff0c;工业和信息化部、文化和旅游部等五部门联合公布2025年度视听系统典型案例名单&#xff0c;青岛道可云网络科技有限公司的“AI元宇宙平台”凭借在数字文博领域的创新突破成功入选“数字舞台和智慧文博视听系统”方向典型案例。这一殊荣不仅标志着道可云在人工智…

STM32G474单片机开发入门(十五)CAN通信功能详解及实战 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

道可云AI元宇宙平台入选国家视听系统典型案例,获文旅部权威认可

根据《工业和信息化部办公厅 文化和旅游部办公厅 国家广播电视总局办公厅 国家知识产权局办公室 中央广播电视总台办公厅关于推荐2025年度视听系统典型案例的通知》&#xff08;工信厅联电子函〔2025〕240号&#xff09;&#xff0c;经各地主管部门和有关单位推荐、专家评审和网…

微积分1期末复习

微积分1期末复习微积分1期末复习 选取往年第一学期真题。 极限、导数与微分(18~19第一学期期中)设函数 \(f(u)\) 可导,函数 \(y = f(x^{3})\) 当自变量 \(x\) 在 \(x = 1\) 处取增量 \(\Delta{x} = -0.1\) 时,相应…

广电总局等五部委联合认证!道可云AI元宇宙成2025智慧文博标杆案例

近日&#xff0c;工业和信息化部、文化和旅游部、国家广播电视总局、国家知识产权局、中央广播电视总台联合公布2025年度视听系统典型案例名单&#xff0c;全国共86个案例入选。青岛道可云网络科技有限公司的"道可云AI元宇宙平台"成功入选"数字舞台和智慧文博视…

道可云AI元宇宙平台入选2025年度视听系统典型案例

根据《工业和信息化部办公厅 文化和旅游部办公厅 国家广播电视总局办公厅 国家知识产权局办公室 中央广播电视总台办公厅关于推荐2025年度视听系统典型案例的通知》&#xff08;工信厅联电子函〔2025〕240号&#xff09;&#xff0c;经各地主管部门和有关单位推荐、专家评审和网…

GrokAI1.1.10 | 马斯克AI,实测可无敏感生图,可生成视频

Grok AI 是由埃隆马斯克领导的科技公司 xAI 开发的一款先进人工智能助手。它能够像人类一样思考并回答问题&#xff0c;分析和解答自然语言问题。通过此应用&#xff0c;用户可以进行写作、获取知识、接受教育以及完成日常任务。Grok AI Mod APK 版本解锁了原始应用中的所有高级…

大型商务综合体怎么选会议设备和厂商?适配 + 稳定才是关键

大型商务办公综合体作为城市商务活动的核心载体&#xff0c;汇聚了各类规模、不同业态的企业&#xff0c;会议场景的频次、规格与多样性远超普通办公空间。会议设备作为商务沟通、决策研讨、品牌展示的核心支撑&#xff0c;其选型是否合理、适配&#xff0c;直接影响综合体的办…

金融产品客户终身价值预测与提升策略

金融产品客户终身价值预测与提升策略 关键词:金融产品、客户终身价值、预测模型、提升策略、数据分析 摘要:本文聚焦于金融产品客户终身价值的预测与提升策略。首先介绍了研究的背景、目的、预期读者和文档结构,对相关术语进行了清晰定义。接着阐述了客户终身价值的核心概念…

如何通过Sub-GHz无线收发单片机,高效搭建低功耗广域网络?

万物互联时代浪潮下&#xff0c;工业抄表、工业监测、家居安防等行业正加速朝着无线化传输与数字化管理等方向持续发展。而物联网芯片作为这些行业搭建LPWAN&#xff08;低功耗广域网&#xff09;的硬件基础之一&#xff0c;亦正从满足基础连接需求&#xff0c;向具备“高效用频…

救命神器8个AI论文网站,助本科生轻松搞定毕业论文!

救命神器8个AI论文网站&#xff0c;助本科生轻松搞定毕业论文&#xff01; AI 工具如何成为论文写作的得力助手 在当今这个信息爆炸的时代&#xff0c;本科生们面对毕业论文的压力越来越大。无论是选题、资料收集&#xff0c;还是撰写和降重&#xff0c;每一个环节都可能成为…

第一篇:背景篇 - 为什么医院需要自己的超算?

副标题&#xff1a;从测序成本下降曲线到AI革命&#xff0c;看医疗科研的算力焦虑 当一台测序仪一天产生的数据量&#xff0c;超过了整个医院信息科过去十年的存储容量&#xff1b;当一个AI模型训练所需的算力&#xff0c;足以让全院的办公电脑瘫痪一周——医疗科研&#xff0…

彼得林奇对公司治理透明度的量化评估

彼得林奇对公司治理透明度的量化评估关键词&#xff1a;彼得林奇、公司治理透明度、量化评估、财务分析、信息披露摘要&#xff1a;本文深入探讨了彼得林奇对公司治理透明度进行量化评估的方法和理念。从彼得林奇的投资思想背景出发&#xff0c;详细解析了公司治理透明度的核心…

LoRA微调的挑战(二)

目录一、总起一句(非常关键)二、第一类问题:数据层面的挑战(最重要)1️⃣ 标注一致性和任务边界不清2️⃣ 多意图输入导致 label 表达困难三、第二类问题:模型与 LoRA 本身的限制3️⃣ LoRA 对“分类能力”提升有…

Django测试框架深度利用:Factory Boy与Fixture对比

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

介电藏芯,测试立本——陶瓷基板介电常数测试,赋能高端电子芯升级

陶瓷基板介电常数测试&#xff1a;在电子设备向“小型化、高频化、高效能”飞速迭代的今天&#xff0c;每一寸空间都承载着极致的性能追求&#xff0c;每一个核心部件都暗藏着决定体验的关键密码。陶瓷基板&#xff0c;作为半导体封装、5G通信、新能源功率模块、航空航天电子等…

比 mian28 写的文章还要电波的文章

AI 真是太好用了。惊天大揭秘!57为什么是质数?看完这篇文章,你会恍然大悟! 亲爱的网友们,大家好!今天小编要带大家探索一个数字界的未解之谜——57!没错,就是那个看似普通的57,它到底是不是质数呢?别急,跟着…

实用指南:使用 Requests 与 Selenium 实现网页数据爬取

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

大数据领域Eureka的核心原理深度剖析

大数据领域Eureka的核心原理深度剖析&#xff1a;从快递驿站到微服务的服务发现密码 关键词&#xff1a;Eureka、服务发现、微服务架构、心跳检测、自我保护机制 摘要&#xff1a;在微服务架构中&#xff0c;如何让"外卖服务"找到"支付服务"&#xff1f;如…

全网最全8个AI论文软件,助本科生搞定毕业论文!

全网最全8个AI论文软件&#xff0c;助本科生搞定毕业论文&#xff01; AI工具如何改变论文写作的未来 随着人工智能技术的飞速发展&#xff0c;AI工具在学术写作中的应用越来越广泛。对于本科生而言&#xff0c;撰写毕业论文是一项既重要又充满挑战的任务。而AI工具的出现&am…