当前位置: 代码迷 >> 综合 >> 笔试代码题--用单链表实现栈
  详细解决方案

笔试代码题--用单链表实现栈

热度:54   发布时间:2024-02-19 23:17:27.0

笔试代码题--用单链表实现栈


栈的特点是先进先出,所以在实现入栈的时候就是实现头链表的头插。

栈顶直接返回头结点的next.

出栈将头结点指向头结点的next的next。

注意在出栈之后,释放结点,应该先保存该结点,然后delete,防止悬空指针。

代码如下:

#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;//用单链表实现栈
class my_stack
{typedef struct ListNode {int val;struct ListNode *next;ListNode() : next(NULL) {}}ListNode;
public:my_stack(){headnode=new ListNode();//headnode=nullptr;headnode->next=nullptr;}void push(int val){ListNode* newnode=new ListNode ;newnode->val = val;newnode->next = headnode->next;headnode->next = newnode;}ListNode* top(){return headnode->next;}void pop(){if(headnode->next==nullptr) return;else {ListNode* node=headnode->next;headnode->next=headnode->next->next;	delete node;}}
ListNode* headnode;
};int main()
{my_stack Stack;Stack.push(1);Stack.push(3);Stack.push(2);Stack.push(5);Stack.push(4);Stack.pop();cout<<Stack.top()->val<<endl;//system("pause");return 0;
}

 

  相关解决方案