想要求出结点中可用数据有学号、姓名、成绩?该如何操作实现?

分别编建立结点并连成链表的creat函数,输出链表中各结点的print函数,插入一结点的insert函数,输出链表中各结点的print函数,将以上4个函数组成一个程序,由主程序先后调用这些函数,实现链表的建立、输出、删除和插入,在主程序中指出链表的总结点个数和指定需要删除和插入的结点。结点中可用数据有学号、姓名、成绩。

慕田峪7331174
浏览 165回答 1
1回答

慕村225694

ifndef __LINKEDLIST_HPP__#define __LINKEDLIST_HPP__#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000extern C {int exit(int);};//单链表结点类定义template <class T> //结点数据域data的类型以参数 (模板)形式提供class Node {public: //公有成员T data; //数据域,允许外部直接访问private: //私有成员Node<T> *next; //指针域(链域),指向后继结点的指针public: //公有成员//构造函数(初始化data和next)Node(const T& item, Node<T> *pNext=NULL) :data(item), next(pNext){}//在当前结点之后插入指针p所指结点void InsertAfter(Node<T> *p) {if (!p) return; //若p为空,则返回p->next = next; //将待插入结点p的next指向当前结点的next域next = p; //将当前结点的next更新为待插入结点p}//删除当前结点的后继结点并返回被删除结点的地址Node<T> *DeleteAfter() {if (!next) return NULL; //若无后继(next为NULL),则返回Node<T> *pNext = next; //next不为空,则记录其地址(留待函数返回后做处理)next = next->next; //用后继结点(next)的后继来更改当前结点的next域return pNext; //返回已记录下的待删除结点地址}//返回指向当前结点的后继结点的指针Node<T> *NextNode() const { return next; }T GetData() const { return data; }void SetData(const T &item) { data = item; }};//单链表类定义template <class T>class LinkedList {private:Node<T> *front, *rear; //表头,表尾Node<T> *currptr; //指向当前结点的指针int size; //表长(结点的个数)private://生成新结点Node<T> *GetNode(const T& item, Node<T> *pNext = NULL) {Node<T> *newNode;//新分配一结点存储空间并初始化数据成员newNode = new Node<T>(item, pNext);if (!newNode) {cerr << 存储空间分配失败!程序将终止。 << endl;exit(1);}return newNode;}//释放结点pvoid *freeNode(Node<T> *p) { if (p) delete p; }private://当链表为空时插入结点时的处理int InsertNewNodeWhenListIsEmpty(const T &item) {if (size > 0) return 0; //不为空表,返回False(0)currptr = GetNode(item);front = currptr;rear = currptr;size ++;return 1; //在空表中插入了结点,返回True(1)}public://构造函数LinkedList() {front = NULL;rear = NULL;currptr = NULL;size = 0;}//拷
打开App,查看更多内容
随时随地看视频慕课网APP