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>

要求:

答:

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

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

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

相关文章

PgSQL技术内幕 - case when表达式实现机制

PgSQL技术内幕 - case when表达式实现机制 CASE表达式如同 C语言中的if/else语句一样&#xff0c;为SQL添加了条件逻辑处理能力&#xff0c;可以根据不同条件返回不同结果。PgSQL支持两种语法&#xff1a;简单表达式和搜索表达式。 1、搜索表达式 语法如下&#xff1a; CASE WH…

用bootstrap结合jQuery实现简单的模态对话框

嗨害嗨&#xff0c;我又来了奥。今天呢&#xff0c;给大家分享一个工作中常用到的插件——模态对话框的用法。想必大家在工作中也遇到很多页面&#xff0c;需要用模态对话框进行交互的吧&#xff0c;现在呢&#xff0c;就让我们一起来了解一下它的使用吧。 首先&#xff0c;我…

【C++】运算符重载详解

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读 1. 为什么需要运算符重载 2. 运算符重载概念 3. 运算符重载示例 3.1 运算符重载 3.2 >或<运算符 4. 运算符重…

SolidWorks 2023 使用操作流程

1. 把头 1.1. 新建零件 1.2. 新建草图 1.3. 拉升凸台 1.4. 等距实体 切换到锤头&#xff0c;新建草图&#xff0c;等距实体1mm 1.5. 拉升凸台 将上一个步骤的草图&#xff0c;进行特征拉升 1.6. 镜像处理 1.7. 圆角处理 1.8. 绘制凹槽 在锤子的侧面绘制草图 1.9. 挖出把手孔…

容器和镜像

容器和镜像是现代软件开发和部署中重要的概念&#xff0c;它们通常与容器化技术&#xff08;如Docker&#xff09;相关联。以下是它们的基本定义和关系&#xff1a; 容器(Container): 容器是一种轻量级、可移植的运行环境&#xff0c;其中包含了应用程序及其依赖项&#xff08;…

BUG:docker启动之后直接退出问题

示例如下&#xff1a; 问题排查&#xff1a; 启动命令 sudo docker run --privilegedtrue --runtimenvidia --shm-size80g -v /mmm_data_center:/mmm_data_center -v /imagecenter_new/:/imagecenter_new -v /data1:/data1 -v /mnt/offline_data/:/mnt/offline_data/ --neth…

可以用来制作硬模空心耳机壳的胶粘剂有哪些种类?

制作耳机壳的胶粘剂有很多种类&#xff0c;常见的有环氧树脂胶水、UV树脂胶、快干胶、热熔胶等。 这些胶粘剂都有不同的特点和适用场景&#xff0c;可以根据自己的需求选择合适的类型。 例如&#xff1a; 环氧树脂胶水具有高温、高强度的特点&#xff0c;适用于需要高强度粘合…

golang开发window环境搭建

1.本人开发环境&#xff1a;window10,idea2020.1.3 2.Go语言环境版本1.5.1 2.1. go语言插件 下载地址 csdn - 安全中心 2.1.1 go的各个版本官网Other Versions - GoLand 2.2下载安装 3.idea配置go环境 4.创建go项目 、5.运行

机器学习 - 梯度下降

场景 上一章学习了代价函数&#xff0c;在机器学习中&#xff0c;代价模型是用于衡量模型预测值与真实值之间的差异的函数。它是优化算法的核心&#xff0c;目标是通过调整模型的参数来最小化代价模型的值&#xff0c;从而使模型的预测结果更接近真实值。常见的代价模型是均方…

javaEE - 20( 18000字 Tomcat 和 HTTP 协议入门 -1)

一&#xff1a; HTTP 协议 1.1. HTTP 是什么 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议. 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经支持了. HTT…

前端登陆加密解决方案

项目背景 环食药烟草的数据下载模块中&#xff0c;需要判断用户在进行数据下载时是进行了登录操作&#xff0c;如果没有登录要跳转登陆页面&#xff0c;输入账号和密码进行登录。 使用场景 项目中需要前端书写登录页面&#xff0c;用户输入账号密码&#xff0c;前端获取到用…

istio 限流

#详细参数看官网&#xff0c;我参数就不解释https://istio.io/latest/docs/reference/config/networking/destination-rule/cat << EOF > dr.yaml apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata:name: my-testnamespace: demon spec:hos…