当前位置: 首页 > news >正文

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>

要求:

答:

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

相关文章:

  • 车位检测,YOLOV8,OPENCV调用
  • Java排序算法-持续更新中
  • OpenCV 图像处理六(傅里叶变换、模板匹配与霍夫变换)
  • MySQL操作问题汇总
  • 视频业务像素、带宽、存储空间计算
  • SpringBoot集成Redisson实现限流(二)
  • QCustomplot实现灰度曲线图
  • 大型语言模型(LLM)的优势、劣势和风险
  • 计算机毕业设计 基于SpringBoot的线上教育培训办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Elasticsearch:将文档级安全性 (DLS) 添加到你的内部知识搜索
  • 【前端web入门第四天】02 CSS三大特性+背景图
  • 【安卓跨程序共享数据,探究ContentProvider】
  • Codeforces Round 888 (Div. 3)补题
  • Springboot 整合 Elasticsearch(二):使用HTTP请求来操作ES
  • 路桥施工污废水处理需要哪些工艺设备
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • C++类的相互关联
  • JavaScript-Array类型
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • js正则,这点儿就够用了
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node项目之评分系统(二)- 数据库设计
  • Redis 懒删除(lazy free)简史
  • Redis的resp协议
  • vue-cli3搭建项目
  • 关于springcloud Gateway中的限流
  • 7行Python代码的人脸识别
  • Hibernate主键生成策略及选择
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (六)Hibernate的二级缓存
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • **python多态
  • .gitignore
  • .htaccess配置重写url引擎
  • .NET 服务 ServiceController
  • .py文件应该怎样打开?
  • .skip() 和 .only() 的使用
  • @AutoConfigurationPackage的使用
  • @KafkaListener注解详解(一)| 常用参数详解
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [C++数据结构](31)哈夫曼树,哈夫曼编码与解码
  • [CSS]CSS 字体属性
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [Java算法分析与设计]--线性结构与顺序表(List)的实现应用
  • [LeetCode] Wildcard Matching
  • [Manacher]【学习笔记】
  • [NHibernate]条件查询Criteria Query
  • [POJ 1915] Knight Moves
  • [python]用python获取EXCEL文件内容并保存到DBC
  • [shell] while read line 与for循环的区别
  • [SpringBoot] SpringBoot JDBC访问数据库
  • [UI5 常用控件] 03.Icon, Avatar,Image