栈链表实现班级人员管理

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<string>
using namespace std;

struct StudentMessage
{
    string ClassName;
    string sex;
    string StudentName;
    string StudentID;
};

struct LinkStackNode
{
    StudentMessage m_Data;
    LinkStackNode* m_Next;
};

void init_LinkStack(LinkStackNode*& LinkStack)
{
    LinkStack->m_Next = NULL;
    cout << "init success" << endl;
}

void push_LinkStack(LinkStackNode* & LinkStack, StudentMessage newData)
{
    LinkStackNode* tempNode = new LinkStackNode();
    tempNode->m_Data.ClassName = newData.ClassName;
    tempNode->m_Data.sex = newData.sex;
    tempNode->m_Data.StudentID = newData.StudentID;
    tempNode->m_Data.StudentName = newData.StudentName;
    tempNode->m_Next = LinkStack->m_Next;
    LinkStack->m_Next = tempNode;

}

void Pop_LinkStack(LinkStackNode*& LinkStack)
{
    if (LinkStack->m_Next == NULL)
    {
        cout << "empty stack" << endl;
    }
    else
    {
        StudentMessage Data;
        Data.ClassName = LinkStack->m_Next->m_Data.sex;
        Data.sex = LinkStack->m_Next->m_Data.sex;
        Data.StudentID = LinkStack->m_Next->m_Data.StudentID;
        Data.StudentName = LinkStack->m_Next->m_Data.StudentName;
        cout << "the poped data is " << Data.StudentName << endl;
        LinkStackNode* tempNode = new LinkStackNode();
        tempNode = LinkStack->m_Next;
        LinkStack = tempNode->m_Next;
        delete tempNode;
        cout << "The current top data is " << LinkStack->m_Data.StudentName << endl;

    }

}
void LinkStack_main()
{
    cout << "***********1.init function*************" << endl;
    cout << "***********2.Push function*************" << endl;
    cout << "***********3.Pop  function*************" << endl;
  
    cout << "***********0.Exit         *************" << endl;
    int choose = -1;
    LinkStackNode* myLinkStack = new LinkStackNode();
    while (choose != 0)
    {
        cout << "Please input your choose:" << endl;
        cin >> choose;

        switch (choose)
        {
        case 1:
        {
            init_LinkStack(myLinkStack);
        }
        /* code */
        break;
        case 2:
        {
            string FileName;
            cout << "Please input filename" << endl;
            cin >> FileName;
            fstream ifs;
            ifs.open(FileName, ios::in);
            if (!ifs)
            {
                cout << "File open fail" << endl;
            }
            while (!ifs.eof())
            {
                StudentMessage newData;
                ifs >> newData.ClassName >> newData.sex >> newData.StudentID >> newData.StudentName;
                push_LinkStack(myLinkStack, newData);
            }
            cout << "The current top is " << myLinkStack->m_Data.StudentName << endl;
            ifs.close();
        }
        break;
        case 3:
        {
            Pop_LinkStack(myLinkStack);
        }
        break;
        default:
            break;
        }
    }
}
int main()
{
    LinkStack_main();
    system("pause");
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值