某一线性数据结构的数据集中的元素数据为不同城市的省会及其位置,数据元素类型定义为: typedef struct{ int city_id; double x; double y; double z; } ElemType; 通过创建链栈记录数据集,并实现销毁、入栈、出栈和获取栈顶元素的C语言代码实现。
时间: 2023-06-07 21:12:03 浏览: 60
好的,下面是实现代码:
typedef struct StackNode{
ElemType data;
struct StackNode *next;
}StackNode, *LinkStackPtr;
typedef struct LinkStack{
LinkStackPtr top;
int count;
}LinkStack;
void InitStack(LinkStack *s){
s->top = NULL;
s->count = 0;
}
void DestroyStack(LinkStack *s){
while(s->top){
LinkStackPtr p = s->top;
s->top = p->next;
free(p);
}
s->count = 0;
}
bool StackEmpty(LinkStack *s){
return s->top == NULL;
}
bool GetTop(LinkStack *s, ElemType *e){
if(StackEmpty(s)){
return false;
}
*e = s->top->data;
return true;
}
bool Push(LinkStack *s, ElemType e){
LinkStackPtr node = (LinkStackPtr)malloc(sizeof(StackNode));
if(!node){
return false;
}
node->data = e;
node->next = s->top;
s->top = node;
s->count++;
return true;
}
bool Pop(LinkStack *s, ElemType *e){
if(StackEmpty(s)){
return false;
}
LinkStackPtr p = s->top;
*e = p->data;
s->top = p->next;
free(p);
s->count--;
return true;
}
以上就是实现线性数据结构链栈的C语言代码。