专业的门户网站建设,阅文集团旗下哪个网站做的最好,临沂网站建设中企动力,人才网网站建设基本流程链栈是一种特殊的链表#xff0c;其基本操作包括#xff1a; 初始化#xff1a;创建一个空的链栈。 判断是否为空#xff1a;检查链栈中是否有元素。 入栈#xff1a;在链栈的栈顶添加一个元素。 出栈#xff1a;删除链栈的栈顶元素#xff0c;并返回该元素的值。 获…链栈是一种特殊的链表其基本操作包括 初始化创建一个空的链栈。 判断是否为空检查链栈中是否有元素。 入栈在链栈的栈顶添加一个元素。 出栈删除链栈的栈顶元素并返回该元素的值。 获取栈顶元素返回链栈的栈顶元素的值。 遍历链栈从栈顶到栈底遍历链栈的所有元素并将它们打印出来。
以下是链栈基本操作的代码实现
typedef struct StackNode {int data; // 存储元素的数据域struct StackNode *next; // 指向下一个元素的指针
} StackNode, *LinkStackPtr;typedef struct LinkStack {LinkStackPtr top; // 栈顶指针int count; // 栈的元素个数
} LinkStack;// 初始化链栈
void initLinkStack(LinkStack *s) {s-top NULL;s-count 0;
}// 判断链栈是否为空
int isEmpty(LinkStack *s) {return s-top NULL;
}// 入栈
void push(LinkStack *s, int data) {LinkStackPtr newNode (LinkStackPtr)malloc(sizeof(StackNode));newNode-data data;newNode-next s-top;s-top newNode;s-count;
}// 出栈
int pop(LinkStack *s) {if (isEmpty(s)) {printf(The stack is empty.\n);return -1;}int data s-top-data;LinkStackPtr temp s-top;s-top s-top-next;free(temp);s-count--;return data;
}// 获取栈顶元素
int getTop(LinkStack *s) {if (isEmpty(s)) {printf(The stack is empty.\n);return -1;}return s-top-data;
}// 遍历链栈
void traverse(LinkStack *s) {if (isEmpty(s)) {printf(The stack is empty.\n);return;}printf(The elements in the stack are: );LinkStackPtr p s-top;while (p) {printf(%d , p-data);p p-next;}printf(\n);
}