13.1.22:线性表之单链表

本文详细介绍了不带头结点的单链表的操作方法,包括初始化、清空、判断是否为空、长度计算、元素获取、查找、插入、删除及遍历等基本操作。
  1 /*
  2 1.不带头结点的单链表。
  3 2.需要修改,有引用在里面,只是伪代码。
  4 
  5 
  6 Levi.
  7        date:2013.1.22
  8 */
  9 
 10 #include <stdio.h>
 11 #include "sys/malloc.h"
 12 #include <stdlib.h>
 13 
 14 typedef struct LNode{
 15     TypeElem data;
 16     struct LNode *next;
 17 };
 18 
 19 typedef struct LNode * LinkList;
 20 
 21 void InitList(LinkList *L){
 22     *L=NULL;
 23 }
 24 
 25 void ClearList(LinkList *L){
 26     LinkList p;
 27     while(L){        
 28         p=L;
 29         L=p->next;
 30         free(p);
 31         p=NULL;
 32     }
 33 }
 34 
 35 void ListEmpty(LinkList L){
 36     if(L)
 37               printf("The L is not NULL\n");
 38     else
 39               printf("The L is NULL\n");
 40               
 41 }
 42 
 43 int ListLength(LinkList L){
 44     LinkList p;
 45     p=L;
 46     int count=0;
 47     while(p){
 48         p=p->next;
 49         ++count;
 50     }
 51     return count;
 52 }
 53 
 54 int GetElem(LinkList L,int i,ElemType *e){
 55     LinkList p;
 56     p=L;
 57     int count=1;
 58     while(p&&count<i){
 59         p=p->next;
 60         ++count;
 61     }
 62     if(!p||count>i){
 63         printf("Get error !!\n");
 64         return 0;
 65     }
 66     p->data=*e;
 67     return 0;
 68 }
 69 
 70 int LocateElem(LinkList L,ElemType e){
 71     int i=1;
 72     LinkList p=L;
 73     while(p&&p->data!=e){
 74         p=p->next;
 75         i++;
 76     }
 77     if(!p)
 78               return -1;
 79     else
 80               return i;
 81 }
 82 
 83 int ListInsert(LinkList &L,int i,ElemType e){
 84     int j=1;
 85     LinkList s,p=L;
 86     if(i<1)
 87               return -1;
 88     s=(LinkList)malloc(sizeof(struct LNode));
 89     s->data=e;
 90     if(i==1){
 91     s->next=L;
 92     L=s;
 93     }
 94 
 95     else{
 96         while(p&&j<i-1){
 97             p=p->next;
 98             ++j;
 99         }
100         if(!p)
101                   return -1;
102         s->next=p->next;
103         p->next=s;
104 
105     }
106     return 0;
107 }
108 
109 int ListDelete(LinkList &L,int i,ElemType *e){
110     int j=1;
111     LinkList p=L,q;
112     if(i<1)
113               return -1;
114     else if(i==1){
115         L=p->next;
116         *e=p->data;
117         free(p);
118         
119     }
120 
121     else{
122         while(p->next&&j<i-1){
123             ++j;
124             p=p->next;
125         }
126         if(!p>next||j>i-1)
127                   return -1;
128         q=p->next;
129         p->next=q->next;
130         *e=q->data;
131         free(q);
132 
133     }
134     return 0;
135 }
136 
137 void ListTraverse(LinkList L,void(*vi)(int)){
138     LinkList p=L;
139     while(p){
140         vi(p->data);
141         p=p->next;
142     }
143     printf("\n");
144 }
145 
146 
147 
148     

 

【最优潮流】直流最优潮流(OPF)课设(Matlab代码实现)内容概要:本文档主要围绕“直流最优潮流(OPF)课设”的Matlab代码实现展开,属于电力系统优化领域的教学与科研实践内容。文档介绍了通过Matlab进行电力系统最优潮流计算的基本原理与编程实现方法,重点聚焦于直流最优潮流模型的构建与求解过程,适用于课程设计或科研入门实践。文中提及使用YALMIP等优化工具包进行建模,并提供了相关资源下载链接,便于读者复现与学习。此外,文档还列举了大量与电力系统、智能优化算法、机器学习、路径规划等相关的Matlab仿真案例,体现出其服务于科研仿真辅导的综合性平台性质。; 适合人群:电气工程、自动化、电力系统及相关专业的本科生、研究生,以及从事电力系统优化、智能算法应用研究的科研人员。; 使用场景及目标:①掌握直流最优潮流的基本原理与Matlab实现方法;②完成课程设计或科研项目中的电力系统优化任务;③借助提供的丰富案例资源,拓展在智能优化、状态估计、微电网调度等方向的研究思路与技术手段。; 阅读建议:建议读者结合文档中提供的网盘资源,下载完整代码与工具包,边学习理论边动手实践。重点关注YALMIP工具的使用方法,并通过复现文中提到的多个案例,加深对电力系统优化问题建模与求解的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值