2024-2-4-复习作业

源代码:

#include <stdio.h>
#include <stdlib.h>
typedef int datatype; 
typedef struct Node
{
    datatype data;
    struct Node *next;
    struct Node *prev;
}*DoubleLinkList;


DoubleLinkList create()
{
    DoubleLinkList s=(DoubleLinkList)malloc(sizeof(struct Node));
    s->data=0;
    s->next=s->prev=NULL;
    return s;
}
DoubleLinkList head_insert(DoubleLinkList head ,int element)
{
    DoubleLinkList s=create();
        s->data=element;
    if(head==NULL) 
        head=s;
    else
    {
        s->next=head;
        head->prev=s;
        head=s;
    }

    return head;
}

DoubleLinkList rear_insert(DoubleLinkList head,int element)
{
    DoubleLinkList s=create();
    s->data=element;
    if(head==NULL)  head=s;
    else
    {
        DoubleLinkList p=head;
        while(p->next!=NULL)
        {
            p=p->next;
        }
        p->next=s;
        s->prev=p;
    }
        return head;
}
DoubleLinkList head_delete(DoubleLinkList head)
{
    if(head==NULL) return NULL;
    DoubleLinkList del=head;
    head=head->next;
    head->prev=NULL;
    free(del);del=NULL;
    return head;
    }

DoubleLinkList rear_delete(DoubleLinkList head)
{
    if(head==NULL) return NULL;
    
    if(head->next==NULL)
    {
        free(head);
        head=NULL;
        return head;
    }    
    DoubleLinkList p=head;
    while(p->next)
    {
        p=p->next;
    }
    p->prev->next=NULL;
    free(p);
    p=NULL;
    return head;    
}

void output(DoubleLinkList head)
{

    if(head==NULL) { printf("empty\n"); return;}
    DoubleLinkList p=head;
    while (p->next!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("%d \n",p->data);
}
int length(DoubleLinkList head)
{
    int len=0;
    if(head==NULL) return len;
    while(head!=NULL)
    {
        head=head->next;
        len++;
    }
    return len;
}
void insert_pos(DoubleLinkList head,int pos,int element)
{
    int len=length(head);
    //printf("len=%d\n",len);
    if( len==0 || pos<=0 || pos>len ) {puts("error pos !"); return;}
    DoubleLinkList p=head;
    for(int i=1;i<pos;i++)
    {
        p=p->next;
    }
    DoubleLinkList s=create();
    s->data=element;
    datatype t=p->data;
    p->data=s->data;
    s->data=t;
    if(p->next==NULL) 
    {
        p=p->prev;
    }
    s->next=p->next;
    s->prev=p;

    p->next->prev=s;
    p->next=s;
}

DoubleLinkList delete_pos(DoubleLinkList head,int pos)
{
    int len=length(head);
        if( len==0 || pos<=0 || pos>len ) {puts("error pos !"); return NULL;}
        if(pos==1)
        {
            head=head_delete(head);
            return head;
        }
    DoubleLinkList p=head;
    for(int i=1;i<pos;i++)
    {
        p=p->next;
    }
    if(pos==len)
    {
        head=rear_delete(head);
        return head;
    }
    DoubleLinkList del=p;
    p->prev->next=p->next;
    p->next->prev=p->prev;
    free(del);del=NULL;
    return head;

}
void update_pos(DoubleLinkList head,int pos,int element)
{
    
    if(pos>length(head) || pos<=0 || head==NULL)
    {
        puts("error pos !");
        return ;   
    }
    DoubleLinkList p=head;
    for(int i=1;i<pos;i++)
    {
        p=p->next;
    }
    p->data=element;   

}

void search_pos(DoubleLinkList head,int pos)
{
    if(pos>length(head) || pos<=0 || head==NULL)
    {
        puts("error pos !");
        return ;   
    }
    DoubleLinkList p=head;
    for(int i=1;i<pos;i++)
    {
        p=p->next;
    }
    printf("The search element is %d \n",p->data);
}

int main(void) 
{
    int n,element,pos;
    DoubleLinkList head=NULL;
    printf("please enter n : " );
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        printf("please enter %d element : ",i+1 );
        scanf("%d",&element);
        //head=head_insert(head,element);
        head=rear_insert(head,element);
    }
    head=head_delete(head);
    head=rear_delete(head);
    output(head);

    printf("please enter insert pos : ");
    scanf("%d",&pos);
    printf("please enter insert element : ");
    scanf("%d",&element);
    insert_pos(head,pos,element);

    printf("please enter delete pos : ");
    scanf("%d",&pos);
    head=delete_pos(head,pos);

    printf("please enter update pos : ");
    scanf("%d",&pos);
    printf("please enter update element : ");
    scanf("%d",&element);
    update_pos(head,pos,element);

    printf("please enter search pos : ");
    scanf("%d",&pos);
    search_pos(head,pos);

    output(head);


    return 0;
}

1>

要求:

效果图:

2>

要求:

效果图:

3>

要求:

答:

(1)栈中定义的变量符合先进后出,队列则符合先进先出

(2)栈中只能从对栈顶操作,队列可以对队头、队尾操作

4>

要求:

答:

在堆区动态申请内存后,释放内存时未将释放指针指向堆区首地址,导致内存无法回收成功。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker进阶篇-轻量级可视化工具Portainer

一、简介 Portainer是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便地管理Docker环境&#xff0c;包括单机环 境和集群环境。 Portainer分为开源社区版&#xff08;CE版&#xff09;和商用版&#xff08;BE版/EE版&#xff09;。 官网&#xff1a;P…

LeetCode:2.两数相加

目录 题目&#xff1a;​编辑2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 分析问题&#xff1a; 官方的优秀代码博主的注释&#xff1a; 博主的辣眼代码&#xff0c;无注释&#xff0c;拉出来拷打自己&#xff1a; 每日表情包&#xff1a; 2. 两数相加 - 力扣&am…

深度学习-随机梯度下降

在训练过程中使用随机梯度下降&#xff0c;但没有解释它为什么起作用。为了澄清这一点&#xff0c;将继续更详细地说明随机梯度下降&#xff08;stochastic gradient descent&#xff09;。 %matplotlib inline import math from mxnet import np, npx from d2l import mxnet …

C# CAD界面-自定义工具栏(二)

运行环境 vs2022 c# cad2016 调试成功 一、引用 acdbmgd.dllacmgd.dllaccoremgd.dllAutodesk.AutoCAD.Interop.Common.dllAutodesk.AutoCAD.Interop.dll using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.T…

RK3568平台 设备模型基本框架-kobject 和kset

一.什么是设备模型 字符设备驱动通常适用于相对简单的设备&#xff0c;对于一些更复杂的功能&#xff0c;比如说电源管理和热插拔事件管理&#xff0c;使用字符设备框架可能不够灵活和高效。为了应对更复杂的设备和功能&#xff0c;Linux内核提供了设备模型。设备模型允许开发…

西瓜书学习笔记——流形学习(公式推导+举例应用)

文章目录 等度量映射&#xff08;仅保留点与其邻近点的距离&#xff09;算法介绍实验分析 局部线性嵌入&#xff08;不仅保留点与其邻近点的距离还要保留邻近关系&#xff09;算法介绍实验分析 等度量映射&#xff08;仅保留点与其邻近点的距离&#xff09; 算法介绍 等度量映…

Unity动画循环偏移的使用

最近项目中有一个需求是做煤矿中猴车的动画&#xff0c;动画本身不复杂&#xff0c;但是猴车很多&#xff0c;怎么能简化工作量呢&#xff1f; 首先单个猴车的动画循环是必须要做的&#xff0c;重点是怎么让不同的猴车动画按顺序错开&#xff0c;研究了以下&#xff0c;可以通过…

后端登录校验

文章目录 登录校验CookieSessionJWT生成JWT校验JWT基于JWT进行身份验证CSRF Cookie、Session、Token的区别&#xff1f;过滤器(Filter)配置过滤器过滤器链 登录校验 由于HTTP协议是无状态的&#xff0c;我们在进行登录后等一系列接口请求是无法直接区分是哪一个用户的发给服务…

电路设计(10)——超温报警电路的proteus仿真

1.题目背景 在现实生活中&#xff0c;常有一种工程技术&#xff0c;即带有自动温度补偿的设备&#xff0c;能在规定温度内正常工作。但是为了设备安全&#xff0c;需设定工作的上限温度&#xff0c;万一温控补偿失效&#xff0c;设备温度一旦超出上限温度时&#xff0c;便立即切…

ES高可用架构涉及常用功能整理

ES高可用架构涉及常用功能整理 1. es的高可用系统架构和相关组件2. es的核心参数2.1 常规配置2.2 特殊优化配置2.2.1 数据分片按ip打散2.2.2 数据分片机架感知2.2.3 强制要求数据分片机架感知2.2.4 写入线程池优化2.2.5 分片balance优化2.2.6 限流控制器优化 3. es常用命令3.1 …

项目中将sass更换成less(TypeError: this.getOptions is not a function已解决)

在更换之前&#xff0c;首先了解sass与less在用法上的区别有哪些&#xff08;这里简单提几个&#xff09;&#xff1a; 变量区别&#xff1a;Less中用&#xff0c;Sass用$sass支持条件语句&#xff0c;可以使用if{}else{}、for循环等&#xff0c;而less不支持在定义变量时候&a…

PyTorch 2.2 中文官方教程(十八)

开始使用完全分片数据并行&#xff08;FSDP&#xff09; 原文&#xff1a;pytorch.org/tutorials/intermediate/FSDP_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 作者&#xff1a;Hamid Shojanazeri&#xff0c;Yanli Zhao&#xff0c;Shen Li 注意…

如何获取和查找您的Android设备的序列号

Hello大家好&#xff01;我是咕噜铁蛋&#xff01;&#xff0c;我们经常会在文章中提及到各种各样的Android设备&#xff0c;而其中一个重要的标识就是设备的序列号。设备的序列号在很多情况下被用于唯一标识一个设备&#xff0c;例如在软件开发中进行设备的调试和测试&#xf…

Python统计分析——参数估计

参考资料&#xff1a;用python动手学统计学 所谓参数就是总体分布的参数。 1、导入库 # 导入用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 导入用于绘图的库 from matplotlib import pyplot as plt import seabor…

FL Studio Producer Edition 21.2.2全插件版+Crack下载链接(亲测可用,非钓鱼)

不知道为什么现在钓鱼的这么多&#xff08;有答案的请在评论区上告诉我&#xff09;&#xff0c;就一个学习版的编曲软件有必要这样子搞吗&#xff1f;我也是在各类博客上找了一大堆教程&#xff0c;根本没几个能用的&#xff0c;索性直接到海盗湾上找了一个&#xff0c;发现可…

学习ArtTs -- 初见ArkTs

作者&#xff1a;Uncle_Tom 原文链接&#xff1a;学习ArtTs -- 初见ArkTs-云社区-华为云 1. 前言 需要静态分析去检查一个语言&#xff0c;必须对这个语言有深刻的认识&#xff0c;才能有效的对这个语言进行有效的检查。 我常说:“作为一个程序分析员需要比一般的程序员考虑…

移动端基础-vw适配

什么是vw 相对单位 相对视口的尺寸 vw:viewport width 换算 1vw1/100视口宽度 vw不需要向rem一样检查视口宽度 若视口宽为375px 1vw3.75px vw与vmin的区别 vmin更照顾横竖屏问题 1vw是视口宽度的100%&#xff0c;而vmin是找宽度和高度中最小的那个&#xff0c;这样横屏…

Ansible自动化工具(1)

目录 ansible的特性&#xff1a;. 二.部署ansible 管理端安装 ansible&#xff1a; ansible 目录结构&#xff1a; 管理主机上配置主机清单&#xff1a; ​编辑 配置密钥对验证&#xff1a; ansible 命令行模块 &#xff1a; 1&#xff0e;command 模块 指定 ip 执行…

Python使用zdppy_es国产框架操作Elasticsearch实现增删改查

Python使用zdppy_es国产框架操作Elasticsearch实现增删改查 本套教程配套有录播课程和私教课程&#xff0c;欢迎私信我。 Docker部署ElasticSearch7 创建基本容器 docker run -itd --name elasticsearch -p 9200:9200 -e "discovery.typesingle-node" -e ES_JAVA_…

esp8266 步骤

安装驱动 http://arduino.esp8266.com/stable/package_esp8266com_index.json oled库 esp8266-oled-ssd1306