使用链式结构达成堆栈
发布时间:2021-11-18 17:19:57 所属栏目:教程 来源:互联网
导读:1 链式结构的结构体,节点的数据类型。概念:头指针指向头节点,和尾节点。 typedef struct node { int data; struct node* next;记录下一个地址的节点,这里不能省略struct }node; #include #include typedef struct node { int data; struct node* naxt;记
1 链式结构的结构体,节点的数据类型。概念:头指针指向头节点,和尾节点。 typedef struct node { int data; struct node* next;记录下一个地址的节点,这里不能省略struct }node; #include #include typedef struct node { int data; struct node* naxt;记录下一个节点的地址 }node; //定义栈的数据类型 typedef struct { node * head;//头指针 }staclk; //创建一个类型; //判断栈是否为空, int empty(stack *ps) { return NULL==ps->head; } // 判断栈是否为满 int full(stack *ps) { return 0; } // 实现入栈 push(stack *ps,int data) { //创建新节点 node *pn =(node *)malloc(sizeof(node)); pn ->data =data; pn->next=NULL; //插入新节点到头结点的位置。 pn->next=head; head =pn; } //实现遍历 void travel(stack *ps) { node *p =ps->head; while(p) { printf("栈中的元素有"); p=p->next; } printf("n"); } //实现出栈 int pop(stack *ps) { node *p=ps->head;//准备一个指针记录要删除的节点地址 ps->head=ps->head->head;//头指针指向下一个节点 int temp=p->data;单独存储要删除的节点元素; free(p);释放要删除的节点 p=NULL; 返回取出的节点元素 return temp; } //清空栈里面所有的元素 void clear(stack *ps) { while(ps->head) {node*p=ps->head;//使用临时指针记录第一个节点 ps->head =ps->head->next;头指针指向下一个节点 free(p); p=NULL } } int main() { // 定义栈并且初始化 stack stack; stack.head=NULL; return 0; } 栈的用途 可以找出最近一次的数据。 (编辑:江门站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |