チェーンスタック構造の入スタック、出スタック、戻りスタックトップ要素、クリアスタックなど
21944 ワード
学習したコードだけを皆さんと共有します:ヘッダファイルLinkStackを定義します.h
LinkStackでcppファイルでの実装関数
最後に、メイン関数でソースコードをテストします.
コードテストの中で崩壊が现れて、本当に疲れて、各位の大神は自分で探し当てるようにしましょうO(∩∩)Oははははは(隔日探し当てましたはははやはり休みます)!
#ifndef LINKSTACK_H
#define LINKSTACK_H
//
typedef struct LINKNODE
{
struct LINKNODE* next;
}LinkNode;
//
typedef struct LINKSTACK
{
LinkNode head;
int size;
}LinkStack;
//
LinkStack* Init_LinkStack();
//
void Push_LinkStack(LinkStack* stack,LinkNode* data);
//
LinkNode* Top_LinkStack(LinkStack* stack);
//
void Pop_LinkStack(LinkStack* stack);
//
int IsEmpty(LinkStack* stack);
//
int Size_LinkStack(LinkStack* stack);
//
void FreeSpace_LinkStack(LinkStack* stack);
//
void Clear_LinkStack(LinkStack* stack);
#endif
LinkStackでcppファイルでの実装関数
#include
#include
#include"LinkStack.h"
//
LinkStack* Init_LinkStack()
{
LinkStack* stack=(LinkStack*)malloc(sizeof(LinkStack));
stack->head.next=NULL;
stack->size=0;
return stack;
}
//
void Push_LinkStack(LinkStack* stack,LinkNode* data)
{
if(stack==NULL)
return;
if(data==NULL)
return;
data->next=stack->head.next;
stack->head.next=data;
stack->size++;
}
//
LinkNode* Top_LinkStack(LinkStack* stack)
{
if(stack==NULL)
return NULL;
return stack->head.next;
}
//
void Pop_LinkStack(LinkStack* stack)
{
if(stack->size==NULL)
return;
if(stack==NULL)
return;
// ,
LinkNode* pNext=stack->head.next;
stack->head.next=pNext->next;
stack->size--;
}
//
int IsEmpty(LinkStack* stack)
{
if(stack==NULL)
{
return -1;
}
if(stack->size==NULL)
return 1;
return 0;
}
//
int Size_LinkStack(LinkStack* stack)
{
if(stack==NULL)
{
return 0;
}
return stack->size;
}
//
void FreeSpace_LinkStack(LinkStack* stack)
{
if(stack)
{
free(stack);
}
}
//
void Clear_LinkStack(LinkStack* stack)
{
stack->head.next=NULL;
stack->size=0;
}
最後に、メイン関数でソースコードをテストします.
#include
#include
#include
#include"LinkStack.h"
typedef struct PERSON
{
LinkNode node;
char name[64];
int age;
}Person;
int main()
{
//
LinkStack* stack=Init_LinkStack();
Person p1,p2,p3,p4,p5;
strcpy_s(p1.name,"aaa");
strcpy_s(p2.name,"bbb");
strcpy_s(p3.name,"ccc");
strcpy_s(p4.name,"ddd");
strcpy_s(p5.name,"eee");
p1.age=10;
p2.age=20;
p3.age=30;
p4.age=40;
p5.age=50;
//
Push_LinkStack(stack,(LinkNode*)&p1);
Push_LinkStack(stack,(LinkNode*)&p2);
Push_LinkStack(stack,(LinkNode*)&p3);
Push_LinkStack(stack,(LinkNode*)&p4);
Push_LinkStack(stack,(LinkNode*)&p5);
//
while(Size_LinkStack(stack)>0)
{
//
Person* person=(Person*)Top_LinkStack(stack);
printf("Name:%s Age:%d
",person->name,person->age);
//
Pop_LinkStack(stack);
}
//Clear_LinkStack(stack);
FreeSpace_LinkStack(stack);
return 0;
}
コードテストの中で崩壊が现れて、本当に疲れて、各位の大神は自分で探し当てるようにしましょうO(∩∩)Oははははは(隔日探し当てましたはははやはり休みます)!