博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++单链表的文件存取
阅读量:2120 次
发布时间:2019-04-30

本文共 2447 字,大约阅读时间需要 8 分钟。

#include 
#include
#include
using namespace std;#define ElemType int//C++单链表结点类class LNode {
public: ElemType data; LNode* next;};//C++单链表类class LinkList {
private: LNode *head;public: LinkList(); void createList(); void displayList(); LNode* getHead();};void menu(LinkList* list);void save(LinkList* list);void read(LinkList* list);int main() {
LinkList list; menu(&list);}//构造方法LinkList::LinkList() {
head = new LNode(); head -> next = NULL;}//创建单链表void LinkList::createList() {
LNode* tail = head; ElemType x; cout << "尾插法,请输入整数,输入999截止" << endl; while (cin >> x) {
if (x == 999) {
return; } LNode* p = new LNode; p->data = x; p->next = NULL; tail->next = p; tail = p; }}//打印单链表void LinkList::displayList() {
LNode* p = head->next; while (p) {
cout << p->data << " "; p = p->next; } cout << endl;}//获取单链表头结点地址LNode * LinkList::getHead() {
return head;}//菜单void menu(LinkList* list) {
int a; cout << "************************************" << endl; cout << "** C++链表的文件存取问题 **" << endl; cout << "************************************" << endl; while (1) {
system("pause"); system("cls"); cout << "********************************" << endl; cout << "* 1.创建单链表。 *" << endl; cout << "* 2.打印单链表。 *" << endl; cout << "* 3.保存单链表。 *" << endl; cout << "* 4.读取单链表。 *" << endl; cout << "* 5.按其它键退出并保存。*" << endl; cout << "********************************" << endl; cin >> a; switch (a) {
case 1: list->createList(); break; case 2: list->displayList(); break; case 3: save(list); break; case 4: read(list); break; default: save(list); return; } }}//保存单链表void save(LinkList* list) {
LNode* p = list->getHead()->next; ofstream outfile; outfile.open("list.txt", ios::binary); if (!outfile) {
cerr << "open failed" << endl; return; } while (p) {
//cout << p->data << endl; outfile.write((char*)p, sizeof(LNode)); p = p->next; } outfile.close(); cout << "链表已保存到 list.txt" << endl;}//读取单链表void read(LinkList* list) {
LNode* p = list->getHead(); ifstream infile; infile.open("list.txt", ios::binary); if (!infile) {
cout << "打开文件失败" << endl; } /* * infile.eof()、iFlie.peek()会多读一行 */ while (infile.peek() != EOF) {
LNode* q = new LNode; infile.read((char*)q, sizeof(LNode)); cout << q->data << endl; q->next = NULL; p->next = q; p = q; } cout << "链表读取成功" << endl;}

转载地址:http://yykrf.baihongyu.com/

你可能感兴趣的文章
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
几个简单的SQL例子
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
AJAX 自己研究玩的
查看>>