链栈-无头节点-带头节点

//无头节点
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct Node{
	ElemType data;
	struct Node* next;
}*LiStack,stack;
bool InitStack(LiStack& S)
{
	S = NULL;
	return true;
}
bool Empty(LiStack S)//判断栈是否为空
{
	return (S == NULL);
}
bool Push(LiStack& S,ElemType e)
{
	//无需判断是否栈满链表特性
	LiStack p = (LiStack)malloc(sizeof(stack));
	p->data = e;
	if (S == NULL)
	{
		p->next = NULL;
	}
	else
	{
		p->next = S;
	}
	S = p;
	return true;
}
bool Pop(LiStack& S, ElemType& e)
{
	if (Empty(S)) return false;
	e = S->data;
	LiStack p = S;
	if (S->next == NULL)
	{
		free(S);
		S = NULL;
		return true;
	}
	S = S->next;
	free(p);
	p = NULL;
	return true;
}
bool GetTop(LiStack S, ElemType& e)
{
	if (InitStack(S)) return false;
	e = S->data;
	return true;
}
bool DestroyStack(LiStack& S)
{
	LiStack p = (LiStack)malloc(sizeof(stack));
	while (S)
	{
		p = S;
		S = S->next;
		free(p);
		p = NULL;
	}
	return true;
}
int main()
{
	LiStack S;
	ElemType e;
	InitStack(S);
	Push(S, 3);
	Push(S, 5);
	Push(S, 7);
	Pop(S, e);
	printf("Pop e=%3d\n", e);
	GetTop(S, e);
	printf("Get e=%3d\n", e);
	Pop(S, e);
	printf("Pop e=%3d\n", e);
	GetTop(S, e);
	printf("Get e=%3d\n", e);
	DestroyStack(S);
	if (Pop(S, e))
		printf("Pop e=%3d\n", e);
	else
		printf("Pop fail\n");
	return 0;
}
//带头结点
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct Node {
	ElemType data;
	struct Node* next;
}*headLiStack, stack;
bool InitStack(headLiStack& S)
{
	S = (headLiStack)malloc(sizeof(stack));
	S ->next= NULL;
	return true;
}
bool Empty(headLiStack S)//判断栈是否为空
{
	return (S->next== NULL);
}
bool Push(headLiStack& S, ElemType e)
{
	//无需判断是否栈满链表特性
	headLiStack p = (headLiStack)malloc(sizeof(stack));
	p->data = e;
	if (S->next == NULL)
	{
		p->next = NULL;
	}
	else
	{
		p->next = S->next;
	}
	S->next = p;
	return true;
}
bool Pop(headLiStack& S, ElemType& e)
{
	if (Empty(S)) return false;
	headLiStack p = S->next;
	e = p->data;
	S->next = p->next;
	free(p);
	p = NULL;
	return true;
}
bool GetTop(headLiStack S, ElemType& e)
{
	if (InitStack(S)) return false;
	e = S->next->data;
	return true;
}
bool DestroyStack(headLiStack& S)
{
	headLiStack p = (headLiStack)malloc(sizeof(stack));
	while (S->next)
	{
		p = S->next;
		S->next= p->next;
		free(p);
		p = NULL;
	}
	return true;
}
int main()
{
	headLiStack S;
	ElemType e;
	InitStack(S);
	Push(S, 3);
	Push(S, 5);
	Push(S, 7);
	Pop(S, e);
	printf("Pop e=%3d\n", e);
	GetTop(S, e);
	printf("Get e=%3d\n", e);
	Pop(S, e);
	printf("Pop e=%3d\n", e);
	GetTop(S, e);
	printf("Get e=%3d\n", e);
	DestroyStack(S);
	if (Pop(S, e))
		printf("Pop e=%3d\n", e);
	else
		printf("Pop fail\n");
	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IEEE-9节点系统是一种常用的电力系统仿真模型,在电力系统领域中被广泛研究和应用。 IEEE-9节点系统由9个节点组成,包括3个发电机节点(Generator Nodes)、3个负载节点(Load Nodes)、2个变压器节点(Transformer Nodes)和1个传输线节点(Transmission Line Node)。每个节点都有相应的电气参数,如电压、电流和阻抗等。这些参数与实际电力系统中的发电机、负载、变压器和传输线等元件对应。 通过使用IEEE-9节点系统,我们可以模拟电力系统中各种情况下的运行和故障。这有助于我们评估和优化电力系统的稳定性、可靠性和效率。在研究和教学中,IEEE-9节点系统也被用作一个经典的示例,用于教授和理解电力系统的基本原理和分析方法。 通过建立IEEE-9节点系统的数学模型,我们可以计算并分析电力系统的潮流分布、功率损耗、电压稳定性、短路电流等重要参数。这些信息对于电力系统规划、运行和控制非常重要。 除了作为理论工具外,IEEE-9节点系统也可以用于验证电力系统仿真软件的准确性和可靠性。通过将实际的电力系统数据输入到模型中,并与仿真软件的输出结果进行比较,我们可以评估和验证软件在各种工况和故障情况下的性能和精度。 总而言之,IEEE-9节点系统是用于电力系统分析和仿真的经典模型,具有重要的研究和应用价值。它不仅可以帮助我们理解电力系统的运行机理,还可以用于评估和优化电力系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值