#include<string>
using namespace std
class student
{
public://公有权限的类......还不如搞个结构了
int num //也不知道做什么的。没注释 似乎是学生的编号
string name//学生名字
student *next//不知道时候做什么的。
}
student *head,*node,*str //不知道是做什么的 node似乎是一个结点的指针,,head好像是头指针?(为什么不定义在类里面呢?)?(没头结点)
student create(int k) //创建
{
string name[5]={"za","hha","ss","ssssss","ererere"} //string类的对象数组
for(int i=1i<=5i++)
{
node=new student //申请动态的结点 node是第一个指针
if(i==1) //好像是头结点
{
node->name=name[i-1]
node->num=i
node->next=NULL
head=node
str=node //str又是什么东西呢?好像要保存这结点指针的临时变量
}
else
{
node->name=name[i-1]
node->num=i
node->next=NULL
str->next=node
str=str->next
}
}
return *head
}
void insert(int i) //插入
{
node=new student//申请了结点
node->num=22222
node->name="aasdasdasdasdasdasdsa"
node->next=NULL
str=head
if(head->num==i) //在数字开头插入head
{
node->next=head
head=node
}
else
{
while(str->next->num!=i||str->next!=NULL)
//这里有两个问题 第一 str->next->num==node->num(问题一1:node->num=22222,,不好意思你找不到他们相等的时候,所以第一条永远不会成立)
//或者str->next==node都出问题 (问题一2:node是你用来申请动态结点的指针,他不在链表里面, 所以str->next==node这个是也永远不会成立的。所以你如果那么写的话
//那个while就是while(0)相当于不执行while)
//但是node->num用i来代替就没有问题 求解
{
str=str->next
}
if(str->next==NULL) //第二个问题就是这儿 这里考虑的是检查所有的结果没有发现的要找的 但是这里还是出问题 求解
//问题二:不知道这里你有什么问题, 你没有说清楚,不过我感觉应该是if(NULL == str)
//因为如果你最后一个结点就是你要找到,但这里仍然会直接退出并说我没有找到你要的结点
{
cout<<"对不起,没有找到你要找的那个数字"<<endl
}
else //这也有问题,不过问题不大,,只是插入的结点是插在你要找到结点的后面的
{
node->next=str->next
str->next=node
}
}
}
void inverse(student *head)//这个函数不知道做什么的
{
student *str,*p,*q //没注释, 有是不知所谓的好几个指针
p=head
q=NULL
while(p!=NULL)
{
str=q
q=p
p=p->next
q->next=str
}
head=q
//问题3 这里本来想返回head的值的,最后通过print(head),但是最终
//执行的结果却不是这样子的值输出了1 za
//问题三:好像通过这么一大串 *** 作,结果只是把你的第一个结点给拿来出来,也就是你所谓的链,后面的部分都给你丢掉了,
//我画图不好没办法给你用图形解释, 反正这里返回的只是你的第一个结点
}
void print(student *head)
{
str=head
while(str!=NULL)
{
cout<<str->num<<" "<<str->name<<" "<<endl
str=str->next
}
}
void main()
{
int t
create(5)
print(head)
// cout<<"请输入你要删除的数字吧"<<endl
// cin>>t
// delete(t) //这个是要做什么,我没懂, 上面没有这个函数 , 要说是释放内存也不能这么写,。。
// 不懂,太深奥
//想要删除某结点, 要用指针 *** 作的 ,不是直接delete的
// print(head)
cout<<"请输入要插入在它前面的的数字吧"<<endl
int k
cin>>k
insert(k) //似乎没问题,我没太仔细看不过没有明显错误
inverse(head) //错误,,上面已写出
print(head)
}
//这种问题应该怎么改啊
//这种问题的很难改, 要是我就重新写一遍,,全是错误 , 而且变量太乱了,好难认识的出。
下卖弄是我给别人写的 , 你自己参考
//class CLinkList
#include "CLinkList.h"
#include "CNode.h"
CLinkList::CLinkList()
{
cout <<"这个是构造函数"<<endl
m_Head = &m_Node //链表的头指针指向头结点
m_Node.SetNodeData(0, 0) //给头结点的内容赋0值
m_Node.SetNodeNext(NULL) //将头结点的Next指针设置为NULL
}
CLinkList::~CLinkList()
{
cout <<"这个是析构函数" <<endl
}
void CLinkList::CreateList() //以向后追加的方式创建一个链表,输入0退出
{
int nScore = 0//定义一个临时的整形变量来保存数据
char chNum = 0//定义一个临时的字符型变量来保存数据
cout <<"欢迎来创建链表 !" <<endl
CNode * pTemp = NULL//定义一个临时结点指针,用来增加新结点用
CNode * pNode = m_Head//定义一个标记指针,首先叫其指向头结点
while(1)
{
pTemp = new LinkNode
cout <<"请输入下一个结点的内容!" <<endl
cin >>nScore //输入0退出
cin >>chNum
if ('0' == nScore)
{
break
}
pTemp->SetNodeData(nScore, chNum) //给新结点的内容赋值
pNode->SetNodeNext(pTemp) //让链尾的Next指向新建的结点
pNode = pTemp //将结尾元素向后移
}
cout <<"创建链表结束" <<endl
}
LinkNode* CLinkList::GetListNode(int _nIndex)
{
cout <<"这个是按位置查找指定位结点的成员函数" <<endl
LinkNode* pNode = m_Head->GetNodeNext()//定义一个临时的结点指针,初始化指向头结点
int Temp = 0 //定义一个临时的变量,用来标记已检查结点的个数的
if(-1 == _nIndex) //返回头结点(即头指针)
{
return m_Head
}
if(_nIndex <-1) //_nIndex控制条件
{
cout <<"您输入的是错误的位置!" <<endl
return 0
}
while(pNode != NULL)
{
if(_nIndex == Temp)
{
return pNode
}
pNode = pNode->GetNodeNext() //临时结点向后移动
++Temp
}
return pNode //没找到结点就返回NULL
}
void CLinkList::InsertList(int _nIndex, int _nScore, char _chNum) //插入结点的函数成员
{
cout <<"这个是插入结点的成员函数" <<endl
LinkNode* pNode = GetListNode(_nIndex - 1) //定义一个结点类的指针,指向的是要插入位置的前一指针
LinkNode* pTemp = new CNode //定义一个临时结点指针,用来增加新结点用
pTemp->SetNodeData(_nScore, _chNum)//设置插入结点的内容
pTemp->SetNodeNext(pNode->GetNodeNext())
pNode->SetNodeNext(pTemp)
}
void CLinkList::DeleteList(int _nIndex)
{
cout <<"这个是删除某一结点的成员函数" <<endl
LinkNode* pNode = GetListNode(_nIndex - 1) //定义一个结点类的指针,指向的是要删除位置的前一指针
LinkNode* pTemp = NULL//定义一个临时结点指针,用来指向要删除的结点
pTemp =pNode->GetNodeNext()//把pTemp指向要删除的结点
pNode->SetNodeNext(pTemp->GetNodeNext()) //把pNode指向要删除的结点的后一个结点
delete pTemp //删除结点
pTemp = NULL
}
LinkNode* CLinkList::GetHeadList()
{
cout <<"这个是获取头指针的成员函数" <<endl
return m_Head
}
void CLinkList::SetListData(int _nIndex, int _nScore, char _chNum)
{
cout <<"这个是设置链表中某一结点的值的成员函数" <<endl
CNode *pNode = GetListNode(_nIndex) //定义一个结点类的指针,指向的是要修改内容位置的结点
pNode->SetNodeData(_nScore, _chNum) //修改内容
}
void CLinkList::ShowListData(int _nIndex)
{
cout <<"这个是显示链表中某一结点值的成员函数" <<endl
CNode *pNode = GetListNode(_nIndex) //定义一个结点类的指针,指向的是要获取内容位置的结点
pNode->ShowNodeData() //返回想要得到位置的结点内容
}
void CLinkList::DestroyList(int _nIndex)
{
cout <<"这个是销毁某一位置以后链表的成员函数" <<endl
LinkNode* pTemp = GetListNode(_nIndex - 1) //定义一个结点指针,指向要销毁位置的前一结点
LinkNode* pNode = pTemp->GetNodeNext() //定义一个结点指针,指向要销毁位置的结点
while(pTemp->GetNodeNext() != NULL) //销毁动作的结束条件或初始条件
{
pTemp->SetNodeNext(pNode->GetNodeNext())//把需要销毁的位置的前结点的Next指向销毁位置的下一个结点
delete pNode //销毁结点
pNode = pTemp->GetNodeNext() //把pNode重新指向要销毁位置的结点
}
}
void CLinkList::ShowList()
{
cout <<"这个是显示链表的成员函数" <<endl
int nTemp = 0 //定义一个临时的整形变量用来控制输入的个数
LinkNode* pTemp = m_Head->GetNodeNext()//定义一个结点类指针,指向第0位的结点
if(NULL == pTemp)
{
cout <<"这是个空链" <<endl
}
while(pTemp != NULL)
{
pTemp->ShowNodeData()
++nTemp
if(0 == nTemp % 5 &&nTemp != 0)//控制每行只能输出5个结点的内容
{
cout <<endl
}
pTemp = pTemp->GetNodeNext()
}
}
//class CNode
#include "CNode.h"
CNode::CNode()
{
int m_nScore = 0
char m_chNum = 0
m_Next = NULL
}
CNode::~CNode()
{
}
void CNode::SetNodeData(int _nScore, char _chNum)
{
m_nScore = _nScore
m_chNum = _chNum
}
void CNode::ShowNodeData()
{
cout << m_nScore <<'\t' <<m_chNum <<endl
}
void CNode::SetNodeNext(CNode* _Next)
{
m_Next = _Next
}
CNode* CNode::GetNodeNext()
{
return m_Next
}
#include "CLinkList.h"
#include "CNode.h"
void Text() //测试函数声明
int main()
{
cout <<"这是mian函数" <<endl
Text()
return 0
}
void Text()
{
cout <<"这个是测试函数" <<endl
LinkList* pList = new LinkList //创建一个内存链表对象
cout <<"------------------CreateList-----------------------------" <<endl
pList->CreateList() //初始化链表的函数成员
pList->ShowList()
cout <<endl
cout <<"------------------GetListNode-----------------------------" <<endl
LinkNode* pNode = NULL //定义一个临时的结点类指针用于检测查找函数成员
pNode = pList->GetListNode(3) //按位置查找指定位结点的成员函数的测试
if(pNode)
{
cout <<"用按位置查找的方法找到了指定位结点" <<endl
}
else
{
cout <<"对不起,用按位置查找的方没有找到指定位结点" <<endl
}
cout <<endl
cout <<"------------------InsertList-----------------------------" <<endl
pList->InsertList(0, 9, 'x')//插入结点的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------DeleteList-----------------------------" <<endl
pList->DeleteList(0) //删除某一结点的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------GetHeadList-----------------------------" <<endl
pNode = NULL
pNode = pList->GetHeadList() //获取头指针的成员函数的测试
if(pNode)
{
cout <<"已经返回了头指针" <<endl
}
else
{
cout <<"对不起,头指针为空" <<endl
}
cout <<endl
cout <<"------------------GetHeadList-----------------------------" <<endl
pList->SetListData(3, 7 , '@') //设置链表中某一结点的值的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------GetListData-----------------------------" <<endl
cout <<"pList->ShowListData(3) ="
pList->ShowListData(3) //获取链中某一结点值的成员函数的测试
cout <<endl
cout <<"------------------DestroyList(3)-----------------------------" <<endl
pList->DestroyList(3) //销毁第3位置以后链表的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------DestroyList(0)-----------------------------" <<endl
pList->DestroyList(0) //销毁第0位置以后链表的成员函数的测试
pList->ShowList()
cout <<endl
delete pList //释放内存
pList = NULL//指针置空
}
#include "CLinkList.h"
#include "CNode.h"
void Text() //测试函数声明
int main()
{
cout <<"这是mian函数" <<endl
Text()
return 0
}
void Text()
{
cout <<"这个是测试函数" <<endl
LinkList* pList = new LinkList //创建一个内存链表对象
cout <<"------------------CreateList-----------------------------" <<endl
pList->CreateList() //初始化链表的函数成员
pList->ShowList()
cout <<endl
cout <<"------------------GetListNode-----------------------------" <<endl
LinkNode* pNode = NULL //定义一个临时的结点类指针用于检测查找函数成员
pNode = pList->GetListNode(3) //按位置查找指定位结点的成员函数的测试
if(pNode)
{
cout <<"用按位置查找的方法找到了指定位结点" <<endl
}
else
{
cout <<"对不起,用按位置查找的方没有找到指定位结点" <<endl
}
cout <<endl
cout <<"------------------InsertList-----------------------------" <<endl
pList->InsertList(0, 9, 'x')//插入结点的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------DeleteList-----------------------------" <<endl
pList->DeleteList(0) //删除某一结点的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------GetHeadList-----------------------------" <<endl
pNode = NULL
pNode = pList->GetHeadList() //获取头指针的成员函数的测试
if(pNode)
{
cout <<"已经返回了头指针" <<endl
}
else
{
cout <<"对不起,头指针为空" <<endl
}
cout <<endl
cout <<"------------------GetHeadList-----------------------------" <<endl
pList->SetListData(3, 7 , '@') //设置链表中某一结点的值的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------GetListData-----------------------------" <<endl
cout <<"pList->ShowListData(3) ="
pList->ShowListData(3) //获取链中某一结点值的成员函数的测试
cout <<endl
cout <<"------------------DestroyList(3)-----------------------------" <<endl
pList->DestroyList(3) //销毁第3位置以后链表的成员函数的测试
pList->ShowList()
cout <<endl
cout <<"------------------DestroyList(0)-----------------------------" <<endl
pList->DestroyList(0) //销毁第0位置以后链表的成员函数的测试
pList->ShowList()
cout <<endl
delete pList //释放内存
pList = NULL//指针置空
}
//class CLinkList
#ifndef __CLINKLIST_H__
#define __CLINKLIST_H__
#include "CNode.h"
typedef class CLinkList
{
private:
LinkNode* m_Head //链表的头指针
LinkNode m_Node //链表的头结点
public:
CLinkList() //构造函数
~CLinkList() //析构函数
void CreateList() //初始化链表的函数成员
LinkNode* GetListNode(int _nIndex) //按位置查找指定位结点的成员函数
void InsertList(int _nIndex, int _nScore, char _chNum)//插入结点的成员函数
void DeleteList(int _nIndex) //删除某一结点的成员函数
LinkNode* GetHeadList() //获取头指针的成员函数
void SetListData(int _nIndex, int _nScore, char _chNum) //设置链表中某一结点的值的成员函数
void CLinkList::ShowListData(int _nIndex) //这个是现实链表中某一结点值的函数成员
void DestroyList(int _nIndex) //销毁某一位置以后链表的成员函数
void ShowList() //显示链表的成员函数
}LinkList
#endif
//class CNode.h
#ifndef __CNODE_H__
#define __CNODE_H__
#include <iostream>
using namespace std
typedef class CNode
{
private:
int m_nScore
char m_chNum
CNode* m_Next
public:
CNode() //构造函数
~CNode() //析构函数
void SetNodeData(int _nScore, char _chNum) //设置结点内容的函数成员
void ShowNodeData() //输出结点内容的函数成员
void SetNodeNext(CNode* _Next) //设置结点Next指针的函数成员
CNode* GetNodeNext()//获取结点Next指针的函数成员
}LinkNode
#endif
内容应该差不太多的 , 自己慢慢看吧
不懂得地方在我博客上问就好了
http://owlwisp.blog.sohu.com/
实现原理,实际上就是输入一个字符串,之后通过正则表达式验证此字符串是否符合邮箱的格式规范,通过以下工具类即可:
import java.util.regex.Matcherimport java.util.regex.Pattern
public class RegisterCheck {
/**
* 验证输入的邮箱格式是否符合
* @param email
* @return 是否合法
*/
public static boolean emailFormat(String email)
{
boolean tag = true
final String pattern1 = "^([a-z0-9A-Z]+[-|//.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?//.)+[a-zA-Z]{2,}$"
final Pattern pattern = Pattern.compile(pattern1)
final Matcher mat = pattern.matcher(email)
if (!mat.find()) {
tag = false
}
return tag
}
}
Za品牌由资生堂(日本东京)和卓多姿(纽约)合作创建的。Za品牌全称“ZOTOS ACCENT”的简写。Za的产品主要是为满足积极享受生活的女性需要,充分绽放女性魅力。另有,Zone Labs公司推出的防毒软件ZoneAlarm Pro也简称za。 za隔离霜能锁住水分,有效抵御紫外线伤害,抑制黑色素及粉刺生成。 za隔离霜具有护肤功效,能防止肌肤粗糙与干燥。保护肌肤免受紫外线(UVA,UVB)的侵害。 za隔离霜防晒指数26 PA++焕发肌肤亮彩,在暗哑肌肤和粗大毛孔表面形成自然保护膜。令肌肤水凝嫩滑,触感如丝。抑制过氧化脂的形成经皮肤医学专家配方验证,无刺激,不过敏,不阻塞毛孔美白清粉将渗透至肌肤。给肌肤剔透晶莹的质感,保护肌肤在白天免受紫外线的侵害,打造透亮、无瑕的肌肤。抑制色素的生成,防止并改善肌肤由于色斑和粉刺而产生的色素沉淀。 使用za隔离霜后能遮盖色斑、粉刺斑印、明显粗大的毛孔以及肤色暗沉,让肌肤晶莹透亮。 已经过防过敏性测试,不堵塞毛孔。越亮的色彩取得更好的美白效果。球形颗粒消除油光,使不均匀肌肤表面得到改善,肤质变得细腻。 za隔离霜使用强力遮盖粉末–彻底遮盖问题部位,使肌肤散发迷人光泽。 平抚粉末–自然光晕,使肌肤剔透丝滑。 丝滑粉末轻轻抹于由于紫外线伤害而造成的问题肌肤。 za隔离霜使用方法:护肤程序结束后,将本品轻轻摸在皮肤表面。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)