#include "iostream"
#include <vector>
using namespace std;
struct inf_person
{
char Name[20];
char Department[20];
int Age;
inf_person* pre;
inf_person* next;
};
class Arry
{
public:
Arry( void );
~Arry( void );
private:
inf_person* pTail;
int m_nSize;
public:
void add( const inf_person* p );
inf_person find( const char* pName );
inf_person del( const char* pName );
};
Arry::Arry( void )
{
pTail = NULL;
m_nSize = 0;
}
Arry::~Arry( void )
{
}
void Arry::add( const inf_person* p)
{
if( !p )
return;
if( !pTail )
{
::new (&pTail[m_nSize]) inf_person;
pTail[m_nSize] = *p;
++m_nSize;;
}
else
{
::new (&pTail[m_nSize]) inf_person;
pTail[m_nSize] = *p;
++m_nSize;
pTail[m_nSize].pre = &pTail[m_nSize-1];
pTail[m_nSize-1].next = &pTail[m_nSize];
}
return;
}
inf_person Arry::find( const char* pName)
{
inf_person temp;
temp.Age = 0;
inf_person* p_temp;
p_temp = NULL;
if( !pName )
return temp;
temp = *pTail;
p_temp = pTail;
while( p_temp )
{
if( strcmp( temp.Name, pName ) )
return temp;
else
{
p_temp = p_temp->pre;
temp = *temp.pre;
}
}
return temp;
}
inf_person Arry::del(const char* pName)
{
inf_person temp;
temp.Age = 0;
inf_person* p_temp;
p_temp = NULL;
if( !pName )
return temp;
temp = *pTail;
p_temp = pTail;
while( p_temp )
{
if( strcmp( temp.Name, pName ) )
{
if(temp.pre)
{
temp.pre->next = temp.next;
temp.next->pre = temp.pre;
}
else
{
temp.next->pre = NULL;
}
return temp;
}
else
{
p_temp = temp.pre;
temp = *temp.pre;
}
}
return temp;
}
int main()
{
char pName[20];
char pp;
pp = 'Y';
Arry b_arry;
while( pp == 'Y' )
{
inf_person pTemp;
pp = ' ';
cout<<endl;
cout<<"是否输入新人信息?(是:Y)";
cin>>pp;
if( pp != 'Y' )
break;
pp = ' ';
cout<<"姓名:";
cin>>pTemp.Name;
cout<<endl;
cout<<"单位:";
cin>>pTemp.Department;
cout<<endl;
cout<<"年龄:";
cin>>pTemp.Age;
pTemp.next = NULL;
pTemp.pre = NULL;
cout<<endl;
cout<<"是否保存?(是:Y)";
cin>>pp;
if( pp == 'Y' )
b_arry.add( &pTemp );
}
cout<<endl;
cout<<"是否要查找某人信息?(是:Y)";
cin>>pp;
while( pp == 'Y' )
{
inf_person pPerson;
cout<<endl;
cout<<"请输入要查找人的姓名:";
cin>>pName;
pPerson = b_arry.find( pName );
if( !pPerson.Age )
{
cout<<"该人不存在!"<<endl;
goto A;
//continue;
}
pp = ' ';
cout<<"要查找人的信息:";
cout<<endl;
cout<<"姓名:";
cout<<pPerson.Name;
cout<<endl;
cout<<"单位:";
cout<<pPerson.Department;
cout<<endl;
cout<<"年龄:";
cout<<pPerson.Age;
A: cout<<endl;
cout<<"是否继续要查找?(是:Y)";
cin>>pp;
}
cout<<endl;
cout<<"是否要删除某人信息?(是:Y)";
cin>>pp;
while( pp == 'Y' )
{
inf_person pPerson;
cout<<endl;
cout<<"请输入要删除人的姓名:";
cin>>pName;
pPerson = b_arry.del( pName );
if( !pPerson.Age )
{
cout<<"该人不存在!"<<endl;
goto B;
//continue;
}
pp = ' ';
cout<<"要删除人的信息:";
cout<<endl;
cout<<"姓名:";
cout<<pPerson.Name;
cout<<endl;
cout<<"单位:";
cout<<pPerson.Department;
cout<<endl;
cout<<"年龄:";
cout<<pPerson.Age;
B: cout<<endl;
cout<<"是否继续要删除其他人的信息?(是:Y)";
cin>>pp;
}
return 0;
}
评论0