当前位置:首页 > 链式栈基本操作C语言实现学习代码
头文件
#define _CRT_SECURE_NO_WARNINGS #include
int num;
datatype data;
struct stack1 *pnext; };
typedef struct stack1 stack;
stack *init(stack *phead);//初始化
stack *push(stack *phead, int num, datatype data);//压栈 stack *pop(stack *phead, stack *tnode);//出栈 stack *freeall(stack *phead);//清空 void printf1(stack *phead);//打印 源文件
#define _CRT_SECURE_NO_WARNINGS #include
stack *init(stack *phead) {
return NULL; }
stack *push(stack *phead, int num, datatype data) {
stack *p = (stack *)malloc(sizeof(stack)); p->num = num; p->data = data; p->pnext = NULL; if (phead == NULL) {
phead = p; return phead; } else {
stack *q = phead;
while (q->pnext != NULL)
{
q = q->pnext; }
q->pnext = p; return phead; } }
void printf1(stack *phead) {
if (phead == NULL) {
return; } else {
printf(\本结点地址=%p,后一个结点地址=%p,结点编号=%d,结点数据=%d\\n\, phead, phead->pnext, phead->num, phead->data); printf1(phead->pnext);
//printf(\本结点地址=%p,后一个结点地址=%p,结点编号=%d,结点数据=%d\\n\ } }
stack *pop(stack *phead, stack *tnode) {
if (phead == NULL) {
return NULL; }
else if (phead->pnext == NULL) {
tnode->num = phead->num; tnode->data = phead->data; free(phead); phead = NULL; return phead; } else {
stack *p = phead;
stack *q = phead->pnext;
while (q->pnext!= NULL) {
p = q;
q = q->pnext; }
p->pnext = NULL; tnode->num = q->num; tnode->data = q->data; free(q);
return phead; } }
stack *freeall(stack *phead) {
if (phead == NULL) {
return NULL; } else {
stack *p = phead; stack *q=NULL; while (p!= NULL) {
q = p->pnext; free(p); p = q;
//q = q->pnext; }
return NULL; } }
测试代码
#define _CRT_SECURE_NO_WARNINGS #include
stack *pp=NULL; //init(pp);
}
//pp = push(pp, 1, 10); //pp = push(pp, 2, 11); //pp = push(pp, 3, 12); //pp = push(pp, 4, 13); //pp = push(pp, 5, 14); //printf(\入栈之后\\n\ //printf1(pp);
//printf(\出栈之后\\n\ ///*pp = freeall(pp); //printf1(pp);*/ //while (pp != NULL) //{
// stack *p = (stack *)malloc(sizeof(stack)); // pp = pop(pp, p); // printf1(pp);
// printf(\出栈的数据\\n%d,%d\\n\ //}
int num = 10, i = 0; while (num) {
i++;
pp = push(pp, i, num % 2); num = num / 2; }
printf1(pp); system(\);
共分享92篇相关文档