有结构体怎么实现啊!!!!!!!!!!!!!!!!能人来啊!!!!!!!

[复制链接]
查看11 | 回复0 | 2008-1-4 22:27:05 | 显示全部楼层 |阅读模式
/**********************************************需要把学生和老师的数据存放在一起.学生和老师的数据相同的分量有:姓名,编号,身份,性别,住址. 要求:1.链表输入数据; 2.保存在文件中; 3.能够读取出来. 高手来帮帮!!!!!!!~~~~~~~~~~~~~**********************************************///又是一个链表的应用。C++程序版本,VC6.0测试通过。#include #include #include #include using namespace std;struct Info{ string m_Name; string m_Code; string m_ID; string m_Sex; string m_Addr; //指针域 struct Info* Next;};typedef struct Info Node;//为结构取个别名。typedef Node* Link;//为结构指针取个别名。//-----------函数声明-----------------Link Create(Link Head);void Release(Link Head);Link Add(Link Head);Link Add(Link Head,fstream& ifile);void Display(Link Head);void Display(Link Head,fstream& ofile);//-----------函数实现-----------------Link Create(Link Head){//建立一个带头节点的空链表。 Head=(Link)new Node;//为Head分配一个节点的内存空间。 Head->m_Name=""; Head->m_Code=""; Head->m_ID=""; Head->m_Sex=""; Head->m_Addr=""; Head->Next=NULL; return Head;}void Release(Link Head){ Link ptr;//声明操作用的指针。 while(Head!=NULL) { ptr=Head;//此处加一个ptr的目的是:可以索引到先前的那一块地址,用来释放。Head=ptr->Next;delete ptr;//此处释放。如果不加ptr,就找不到那个地址了。 }//while.}Link Add(Link Head){ Link pNew;//声明新节点指针。 Link ptr;//声明操作用的指针。 pNew=(Link)new Node;//分配内存。 if(!pNew)cout>name; cout>code; cout>id; cout>sex; cout>addr;pNew->m_Name=name; pNew->m_Code=code; pNew->m_ID=id; pNew->m_Sex=sex; pNew->m_Addr=addr; //指针域 ptr=Head->Next;//保存指针。 Head->Next=pNew;//指向新节点。 pNew->Next=ptr;//链上后面的节点。(恢复指针) cout>name;//cout>code;//cout>id;//cout>sex;//cout>addr;pNew->m_Name=name;pNew->m_Code=code;pNew->m_ID=id;pNew->m_Sex=sex;pNew->m_Addr=addr;//指针域ptr=Head->Next;//保存指针。Head->Next=pNew;//指向新节点。pNew->Next=ptr;//链上后面的节点。(恢复指针) } coutNext; while(ptr!=NULL) {coutm_Name m_Code m_ID m_Sex m_AddrNext; }}void Display(Link Head,fstream& ofile){//重载Display(),在文件中保存。 Link ptr; ptr=Head->Next; ofile.clear(); while(ptr!=NULL) {ofilem_Name m_Code m_ID m_Sex m_AddrNext; }cout>menu;if(menu>4||menu<0){ cout<<"请按菜单对应的数字选择合适的操作,谢谢合作!"<<endl; break;}switch(menu){case 0: cout<<"已退出系统!"<<endl; loop=0; break;case 1: list=Add(list); break;case 2: Display(list,iofile); break;case 3: list=Add(list,iofile); break;case 4: Display(list); break;}//switch(menu) }//while(loop)Release(list);//释放链表。 iofile.close(); return 0;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行