考研数据结构

您所在的位置:网站首页 题目头的好处 考研数据结构

考研数据结构

2024-07-17 04:53:49| 来源: 网络整理| 查看: 265

考研数据结构目录

1、顺序表(链表操作)

(1)基础单链表操作(模板)

(2)必看链表习题(常规套路)

 2、堆栈与队列

(1)栈的基本操作

(2)栈的链表操作

 后续将持续更新~

前言:首先这四个题都是考研真题,不要觉得它就难了,很有锻炼思维的作用,自我感觉都是很基础的,而且最重要的一点是如何处理这一类问题是有固定方法的。

这四个题可以说也是固定思想套路,都是建立一个新的链表进行辅助操作,在考研中算是比较公认的一种处理方法了,小伙伴们平常做题也可以使用。

补充:有些小伙伴可能说会说,“我还有更好的方法或者更简洁的代码”,当然肯定会出现这种情况,我也并不反对,但是你的代码是给阅卷老师看的,这种新建链表的方法往往结构会更清晰。

 建议:这些题小伙伴们可以先自己独立思考一下,建议先在脑子里有自己的动态想法

目录

1、倒置链表

2、合并有序链表

3、将链表中所有负数结点移动到所有整数之前

4、将最小节点移动到第一个节点的前面

5、完整运行代码

1、倒置链表 //倒置链表 void reverse(NODE * head){ //方法:建议一个新的节点专门存 //注意:这里给出的head没有头节点滴 NODE * head_a,*p,*s; head_a=(NODE*)malloc(sizeof(NODE)); head_a->next=NULL; s=head_a; p=head; while(p){//或者head->next head=p->next;//1、孤立结点 p->next=s->next;//2、插到新节点后面 s->next=p; p=head; // 3、返回p指针 } head=s->next;//4、把head和head_a对接 printLink(head); } 2、合并有序链表 //合并有序链表 void merge(NODE * head_a,NODE * head_b){ NODE * head_c,*p1,*p2,*s; head_c=(NODE*)malloc(sizeof(NODE)); head_c->next=NULL; s=head_c;p1=head_a;p2=head_b; while(p1&&p2){ if(p1->datadata){//p小,先排head_a链表 head_a=p1->next;//孤立 p1->next=s->next; s->next=p1; s=p1; p1=head_a; }else{ head_b=p2->next; p2->next=s->next; s->next=p2; s=p2; p2=head_b; } if(p1){ s->next=p1; }else{ s->next=p2; } } printLink(head_c); } 3、将链表中所有负数结点移动到所有整数之前 //把负数移动到所有整数之前 void move(NODE * head){ //初始化 NODE * head_a,*p,*q,*s; head_a=(NODE*)malloc(sizeof(NODE)); s=head_a;head_a->next=NULL; //为便于操作 给它原始链表加一个头节点 p= (NODE*)malloc(sizeof(NODE)); p->next=head;head=p; //进入正题 while(p->next){ if(p->next->datanext; p->next=q->next;//最后q(也就是负数节点)被孤立出来 q->next=s->next; s->next=q; s=q; }else{ p=p->next; } } //最后把head_a上所有的负数节点加到原链表上 q->next=head->next;//最后是q在head_a的尾部 free(head);//把原来多余的头节点释放掉 head_a=head_a->next;//把新建的头结点孤立掉 printLink(head_a); } 4、将最小节点移动到第一个节点的前面 //把最小节点移动到第一个节点的前面 void moveMin(NODE * head){ NODE *p,*q,*s; //为原来节点加一个头结点 p=(NODE*)malloc(sizeof(NODE)); p->next=head; head=p; //进入正题 p=head; q=head->next; while(q->next){ if(q->next->datanext->data){ p=q; } q=q->next; } //最后p为最小值的 前一个节点 s=p->next;//s就是最小值的节点 p->next=s->next;//孤立s节点 s->next=head->next; head->next=s; head=head->next;//删除head头结点 printLink(head); } 5、完整运行代码 #include typedef struct node{ int data; struct node * next; }NODE; //打印节点 void printLink(NODE * head){//打印结点 NODE * p; p=head; while(p->next){ printf("%2d ",p->data); p=p->next; } printf("%d\n",p->data);//上面那个循环不会打印最后一个,把最后一个也打印 } //创建节点 NODE * creat(){ NODE * head,*p,*s; head=(NODE*)malloc(sizeof(NODE)); p=head; head->next=NULL; int flag=-1; for(int i=1;i//或者head->next head=p->next;//1、孤立结点 p->next=s->next;//2、插到新节点后面 s->next=p; p=head; // 3、返回p指针 } head=s->next;//4、把head和head_a对接 printLink(head); } //合并有序链表 void merge(NODE * head_a,NODE * head_b){ NODE * head_c,*p1,*p2,*s; head_c=(NODE*)malloc(sizeof(NODE)); head_c->next=NULL; s=head_c;p1=head_a;p2=head_b; while(p1&&p2){ if(p1->datadata){//p小,先排head_a链表 head_a=p1->next;//孤立 p1->next=s->next; s->next=p1; s=p1; p1=head_a; }else{ head_b=p2->next; p2->next=s->next; s->next=p2; s=p2; p2=head_b; } if(p1){ s->next=p1; }else{ s->next=p2; } } printLink(head_c); } //把负数移动到所有整数之前 void move(NODE * head){ //初始化 NODE * head_a,*p,*q,*s; head_a=(NODE*)malloc(sizeof(NODE)); s=head_a;head_a->next=NULL; //为便于操作 给它原始链表加一个头节点 p= (NODE*)malloc(sizeof(NODE)); p->next=head;head=p; //进入正题 while(p->next){ if(p->next->datanext; p->next=q->next;//最后q(也就是负数节点)被孤立出来 q->next=s->next; s->next=q; s=q; }else{ p=p->next; } } //最后把head_a上所有的负数节点加到原链表上 q->next=head->next;//最后是q在head_a的尾部 free(head);//把原来多余的头节点释放掉 head_a=head_a->next;//把新建的头结点孤立掉 printLink(head_a); } //把最小节点移动到第一个节点的前面 void moveMin(NODE * head){ NODE *p,*q,*s; //为原来节点加一个头结点 p=(NODE*)malloc(sizeof(NODE)); p->next=head; head=p; //进入正题 p=head; q=head->next; while(q->next){ if(q->next->datanext->data){ p=q; } q=q->next; } //最后p为最小值的 前一个节点 s=p->next;//s就是最小值的节点 p->next=s->next;//孤立s节点 s->next=head->next; head->next=s; head=head->next;//删除head头结点 printLink(head); } int main(){ NODE * head,*p,*s; head=creat(); // reverse(head); move(head); }



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭