第七周项目二

  1. /*  
  2. 烟台大学计算机学院  
  3.   
  4. 文件名称:xiangmu.cpp  
  5.   
  6. 作者:刘照京  
  7.   
  8. 完成日期:2017年10月26日  
  9.   
  10. 问题描述:定义链队存储结构,实现其基本运算,并完成测试。 
  11.   
  12. 输入描述:无 
  13.   
  14. 输出描述:队列元素,出列入列元素测试结果 
  15.   
  16. */   
  17.   
  18.   
  19. LQN.h:  
  20.   
  21.   
  22. #include <stdio.h>  
  23. #include <malloc.h>  
  24. typedef int ElemType;  
  25.   
  26.   
  27. typedef struct qnode  
  28. {  
  29.     ElemType data;  
  30.   
  31.     struct qnode *next;  
  32. }DataNode;  
  33.   
  34.   
  35. typedef struct  
  36. {  
  37.     DataNode *front;  
  38.   
  39.     DataNode *rear;  
  40. }LinkQuNode;  
  41.   
  42.   
  43. void InitQueue(LinkQuNode *&q);  //初始化顺序环形队列  
  44. void DestroyQueue(LinkQuNode *&q); //销毁顺序环形队列  
  45. bool QueueEmpty(LinkQuNode *q);  //判断顺序环形队列是否为空  
  46. int QueueLength(LinkQuNode *q);   //返回队列中元素个数,也称队列长度  
  47. bool enQueue(LinkQuNode *&q,ElemType e);   //进队  
  48. bool deQueue(LinkQuNode *&q,ElemType &e);  //出队  
  49.   
  50.   
  51.   
  52. LQN.cpp:  
  53.   
  54. #include "LQN.h"  
  55.   
  56.   
  57. void InitQueue(LinkQuNode *&q)  
  58. {  
  59.     q=(LinkQuNode *)malloc(sizeof(LinkQuNode));  
  60.   
  61.     q->front=q->rear=NULL;  
  62. }  
  63.   
  64. void DestroyQueue(LinkQuNode *&q)  
  65. {  
  66.     DataNode *pre=q->front,*p;  
  67.   
  68.     if(pre!=NULL)  
  69.     {  
  70.         p=pre->next;  
  71.   
  72.         while(p!=NULL)  
  73.         {  
  74.             free(pre);  
  75.             pre=p;  
  76.             p=p->next;  
  77.         }  
  78.         free(pre);  
  79.     }  
  80.   
  81.     free(q);  
  82.   
  83. }  
  84.   
  85. bool QueueEmpty(LinkQuNode *q)  
  86. {  
  87.     return(q->rear==NULL);  
  88. }  
  89.   
  90. int QueueLength(LinkQuNode *q)  
  91. {  
  92.     int i=0;  
  93.   
  94.     DataNode *p;  
  95.   
  96.     p=q->front;  
  97.   
  98.     while(p!=NULL)  
  99.     {  
  100.         i++;  
  101.   
  102.         p=p->next;  
  103.     }  
  104.   
  105.     return i;  
  106. }  
  107. bool enQueue(LinkQuNode *&q,ElemType e)  
  108. {  
  109.     DataNode *p;  
  110.   
  111.     p=(DataNode*)malloc(sizeof(DataNode));  
  112.   
  113.     p->data=e;  
  114.   
  115.     p->next=NULL;  
  116.   
  117.     if(q->rear==NULL)  
  118.     {  
  119.         q->front=q->rear=p;  
  120.     }  
  121.     else  
  122.     {  
  123.         q->rear->next=p;  
  124.         q->rear=p;  
  125.     }  
  126. }  
  127. bool deQueue(LinkQuNode *&q,ElemType &e)  
  128. {  
  129.     DataNode *t;  
  130.   
  131.     if(q->rear==NULL)  
  132.         return false;  
  133.   
  134.     t=q->front;  
  135.   
  136.     if(q->front==q->rear)  
  137.   
  138.     q->front=q->rear=NULL;  
  139.    else  
  140.     q->front=q->front->next;  
  141.     e=t->data;  
  142.   
  143.     free(t);  
  144.   
  145.     return true;  
  146. }  
  147.   
  148.   
  149.   
  150. main:  
  151.   
  152. #include <stdio.h>  
  153. #include "LQN.h"  
  154.   
  155. int main()  
  156. {  
  157.     ElemType e;  
  158.     LinkQuNode *q;  
  159.     printf("(1)初始化链队q\n");  
  160.     InitQueue(q);  
  161.     printf("(2)依次进链队元素a,b,c\n");  
  162.     enQueue(q,'a');  
  163.     enQueue(q,'b');  
  164.     enQueue(q,'c');  
  165.     printf("(3)链队为%s\n",(QueueEmpty(q)?"空":"非空"));  
  166.     if (deQueue(q,e)==0)  
  167.         printf("队空,不能出队\n");  
  168.     else  
  169.         printf("(4)出队一个元素%c\n",e);  
  170.     printf("(5)链队q的元素个数:%d\n",QueueLength(q));  
  171.     printf("(6)依次进链队元素d,e,f\n");  
  172.     enQueue(q,'d');  
  173.     enQueue(q,'e');  
  174.     enQueue(q,'f');  
  175.     printf("(7)链队q的元素个数:%d\n",QueueLength(q));  
  176.     printf("(8)出链队序列:");  
  177.     while (!QueueEmpty(q))  
  178.     {  
  179.         deQueue(q,e);  
  180.         printf("%c ",e);  
  181.     }  
  182.     printf("\n");  
  183.     printf("(9)释放链队\n");  
  184.     DestroyQueue(q);  
  185.     return 0;  
  186. }  



运行结果



学习心得:学会了链队环形队列的基本操作。

计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略研究(Matlab代码实现)内容概要:本文研究了计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略,并提供了基于Matlab的代码实现。研究聚焦于在高渗透率可再生能源接入背景下,如何协调微电网内部分布式电源、储能系统与大规模电动汽车充电负荷之间的互动关系,通过引入需求侧响应机制,建立多目标优化调度模型,实现系统运行成本最小化、可再生能源消纳最大化以及电网负荷曲线的削峰填谷。文中详细阐述了风电出力不确定性处理、电动汽车集群充放电行为建模、电价型与激励型需求响应机制设计以及优化求解算法的应用。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、微电网、电动汽车等领域技术研发的工程师。; 使用场景及目标:①用于复现相关硕士论文研究成果,深入理解含高比例风电的微电网优化调度建模方法;②为开展电动汽车参与电网互动(V2G)、需求侧响应等课题提供仿真平台和技术参考;③适用于电力系统优化、能源互联网、综合能源系统等相关领域的教学与科研项目开发。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注模型构建逻辑与算法实现细节,同时可参考文档中提及的其他相关案例(如储能优化、负荷预测等),以拓宽研究视野并促进交叉创新。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值