纯C语言实现的通用链表(类)源代码,可以供学习参考,内附代码,可执行
1
【问题描述】 请设计一个链表类,实现链表的初始化、插入、删除和打印操作。 节点的定义如下: typedef int elementType; typedef struct node { elementType data; node* next; } LList, *PList; 链表类的定义及要求如下: class linkedList { public: linkedList();//构造函数 virtual ~linkedList();//析构函数,注意要链表中所有节点的资源 void insert( int value );//警告:必须初始化才能使用! bool initiate();//初始化单链表,使用new操作创建头结点。如果创建失败,则返回false,否则返回true bool isEmpty();//判断单链表是否为空 //删除单链表中第pos个元素结点,并将删除的节点的值存在value中。 //注意:如果链表为空、删除位置大于链表长度、以及删除位置为0的情况,需要终止删除并输出相应信息 bool remove( int pos, int& value ); void print();//顺序打印单链表,如果是单链表为空,则输出 Empty int Length();//返回单链表长度。如果是单链表为空,则返回-1 private: LList *head; int len; }; main函数: int main(int argc, char* argv[]) { linkedList L1; int n; int val; //初始化链表 if(!L1.initiate()) return 0; cin>>n;//输入链表中数据个数 for(int i=0; i>val; L1.insert(val); } cout << "Origin Length:" << L1.Length() << endl;//输出链表长度 cout <>n;//输入需要删除的数据的位置 if (L1.remove(n,val)) { //删除位置n的数据,并将删除的数据值放在val中 cout<<"Delete the data at position("<
2021-06-30 13:04:59 4KB c++
1
新手啊 写了5个小时左右 迷宫生成的比较简单 看看栈的实现把 类里面了 感觉挺简单的 呵呵~!
2021-05-25 22:34:41 46KB 链表 迷宫
1
实现双向链表,查找、替换、删除、插入,并用线程同步技术实现了多线程读写与线程安全
2019-12-21 22:12:56 7KB 双向链表 多线程 安全读写
1
/* 题目: 大学中的人员分三类 :学生,教师和职员,他们的基本信息如下: 学生:姓名,年龄,学号,年级,成绩 教师:姓名,年龄,身份证号,职称,工资 职员:姓名,年龄,身份证号,工资 现在需要管理各类人员的信息,请用面向对象的方法设计一个异质链表,用来存放他们的信息。 异质链表实现:有三个类 student,teacher,staff,再定义一个 链表类,此类用来存放这几个不同类的对象,并将链表类 list 声明为所有这些 类的友元,使它们可以访问它们的私有成员。*/
2019-12-21 22:09:14 7KB 链表 C++ 编程
1
在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)中的链表类来构建一个学生管理系统。MFC是微软提供的一套C++类库,它简化了Windows应用程序的开发,特别是用户界面部分。链表作为一种高效的数据结构,非常适合用于管理动态数据集合,如学生的个人信息。 我们要了解MFC中的CList类,它是实现链表功能的基础。CList类提供了添加、删除、遍历元素等操作,可以存储任意类型的对象,包括自定义的学生结构体。在学生管理系统中,每个学生的信息可能包括姓名、学号、年龄、成绩等字段,这些信息可以封装在一个名为`Student`的结构体或类中。 创建`Student`类或结构体: ```cpp struct Student { CString name; // 学生姓名 int id; // 学号 int age; // 年龄 float score; // 成绩 }; ``` 接下来,我们需要利用CList类来管理`Student`对象。需要包含MFC头文件`#include `,然后创建一个CList实例,并声明其存储类型为`Student`指针: ```cpp CList studentList; ``` 添加学生信息到链表中: ```cpp void AddStudent(CStudent* pStudent) { studentList.AddHead(pStudent); } ``` 遍历链表显示所有学生信息: ```cpp void DisplayAllStudents() { CList::POSITION pos = studentList.GetHeadPosition(); while (pos != NULL) { CStudent* pStudent = studentList.GetNext(pos); // 打印或处理学生信息 } } ``` 此外,还可以实现查找、删除特定学生等功能。例如,根据学号查找学生: ```cpp CStudent* FindStudentById(int id) { CList::POSITION pos = studentList.GetHeadPosition(); while (pos != NULL) { CStudent* pStudent = studentList.GetNext(pos); if (pStudent->id == id) { return pStudent; } } return NULL; // 如果未找到返回NULL } void RemoveStudentById(int id) { CStudent* pToRemove = FindStudentById(id); if (pToRemove != NULL) { studentList.Remove(pToRemove); } } ``` 为了与用户交互,我们通常会结合MFC的对话框类(CDialog)创建一个用户界面,用户可以通过输入框输入学生信息,通过按钮触发上述函数。在MFC应用中,通常会继承CDialog类创建一个自定义对话框,并在其中处理按钮事件。 考虑到文件I/O,我们可以将学生数据保存到文件中,以便下次启动程序时恢复。这可以通过序列化(Serialization)机制实现。MFC提供了CObject类的Serialize成员函数,使得派生类(如`Student`)可以轻松地进行序列化和反序列化操作。创建一个.CPP文件来处理文件操作: ```cpp void SaveToFile(CFile& file) { studentList.Serialize(file); } void LoadFromFile(CFile& file) { studentList.Serialize(file); } ``` 在对话框的OnOpen或OnSave事件中,打开文件对话框,获取文件路径,然后调用这些函数进行读写操作。 通过以上步骤,我们已经构建了一个基于MFC链表类的学生管理系统,实现了学生信息的增删查改以及文件操作。MFC的CList类为我们提供了一种灵活且高效的管理动态数据集的方式,使得开发这样的系统变得相对简单。在实际项目中,还可以根据需求增加更多的功能,如排序、过滤等。
2019-12-21 21:22:28 2.24MB 学生管理系统
1
本次课程设计的题目是设计一个职工工资管理系统,编写的主要内容如下: (1) 建立职工信息数据,包括职工编号、姓名、性别、合计工资、出生时间、参加工作时间和年龄(计算得到)。 (2) 根据职工信息表,建立只含有姓名和年龄的职工信息简表。 (3) 使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类),教师教师工资由基本工资+级别工资+工龄工资+课时工资构成;工人工资由基本工资+级别工资+工龄工资+奖励工资构成 (4) 编写同名display()成员函数,用来职工信息的内容。 (5) 按年龄输出此年龄段教师信息。 (6) 对“<<”和“>>”运算进行重载。 (7) 抽取并计算职工的平均年龄。 (8) 按姓名检索并输出检索信息 (9) 编写文件操作函数,存储教师和工人信息 (10) 编写链表类模板,分别建立教师和和工人链表
2019-12-21 21:14:22 638KB 单链表、类
1
本应用为实验实践程序,使用MFC开发的链表程序,便于学生学习链表
2019-12-21 19:58:43 30KB MFC 链表
1