本文主要是介绍写给自己看的栈(1):基本操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.定义
用单链表来实现的栈,定义也就跟单链表一样了,有一个数据成员和一个指针成员。
typedef int eletype;typedef struct node
{eletype data;struct node *next;
}Stack;
2.新建栈
完成的操作就是分配空间,注意指针指向结尾NULL。
Stack *CreateStack()
{Stack *S;S = malloc(sizeof(Stack));if (S == NULL) {printf("Out of space\n");return NULL;}//while (S->next != NULL)// Pop(S);S->next = NULL;return S;
}
3.删除栈
跟删除单链表类似,要先保存next指针指向的位置再free当前空间。
void DeleteStack(Stack *S)
{Stack *tmp, *current;current = S;while (current != NULL) {tmp = current->next;free(current);current = tmp;}
}
4.入栈
分配空间,调整next指针。
void Push(Stack *S, eletype data)
{Stack *tmp;tmp = malloc(sizeof(Stack));if (tmp == NULL) {printf("Out of space\n");return;}else {tmp->data = data;tmp->next = S->next;S->next = tmp;}
}
5.出栈
调整next指针,释放空间。
void Pop(Stack *S)
{Stack *first;if (S->next == NULL) {printf("Empty stack\n");return;}else {first = S->next;S->next = S->next->next;free(first);}
}
这篇关于写给自己看的栈(1):基本操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!