关于链表的C++的程序问题

关于链表的C++的程序问题,第1张

#include<iostream>

#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.Matcher 

import 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隔离霜使用方法:护肤程序结束后,将本品轻轻摸在皮肤表面。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8074019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存