五,类,结构体,指针,引导
类可以将变量,数组和函数完美的打包在一起
#include<iostream>
using namespace std;
class Person
{
privste:
double score;
publie:
string name;
int age;
void say()
{
cout<<"人会说话";
}
void set_score(double cj)
{
if(cj>=0 && cj<=100)
score=cj;
}
double get_score()
{
return score;
}
};
int main()
{
Person p1;
return 0;
}
类中的变量和函数同一被称为成员变量
private内容是私有成员变量在类的外面不能访问,后面是内容是公有成员变量在类的外面能访问;
#include<iostream>
using namespace std;
const int N=1000010;
class Person
{
private:
int age,height;
double money;
string books[100];
publie:
string name;
void say()
{
cout<<"I""m"<<name<<endl;
}
int set()
{
age = a;
}
int get_age()
{
return age;
}
void add_money(double x)
{
money+=x;
}
} person_a,person_b,persons[100];
int main()
{
persen c;
c.name='yxe';
c.age=18;
c.set_age(18);
c.abb_money(100);
c.say();
cout<<c.get_age()<<endl;
return 0;
}
结构体和类的作用一样,不同的是类默认的是private
struct person
{
private:
int age,height;
double money;
string books[100];
publie:
string name;
void say()
{
cout<<"I""m"<<" ";
}
int set_age(int a)
{
age = a;
}
int get_age()
{
return age;
}
void sdd_money[double x]
{
money += x;
}
}person_a,person_b,person[100];
2.指针和引用
指针是存放变量的值,我们可以用指针来改变变量的值
#include<iostream>
using namespace std;
int main()
{
int a=6;
int *z=&a;
*z+=1;
cout<<a;
return 0;
}
数组是一种特殊的指针
#include<iostream>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
for(int i=0;i<5;i++)
cout<<*(a+i)<<endl;
return 0;
}
引用和指针相似,是给指针取了一个别名
#include<iostream>
using namespace std;
int main()
{
int a=10;
int &p=a;
p+=5;
cout<<a<<endl;
return 0;
}
指针和结构体
#include<iostream>
using namespace std;
struct Node
{
int val;
Node *next;
};
int main()
{
Node *p1=new Node();
p1->val=1;
Node *p2=new Node();
p2->val=2;
p1->next =p2;
Node *p3 = new Node();
p3->val=3;
p2->next =p3;
for(Node *head=p1;head;head=head->next)
{
cout<<head->val <<endl;
}
return 0;
}
链表
#include<iostream>
using namespace std;
struct Node
{
int avl;
Node* next;
}*haed;
int main()
{
for(int i=0;i<3;i++)
{
Node *p=new next;
p->avl =i;
p->avl =haed;
haed=p;
}
for(Node* p=haed;p;p=p->avl )
{
cout<<p->avl ;
}
return 0;
}
删除链的表节点
#include<iostream>
using namespace std;
struct Node
{
int val;
Node* next;
}*head;
void Delete(int n)
{
Node* temp1 = head;
if(n==1)
{
head = temp1->next ;
double temp1;
return;
}
for(int i=1;i<n-1;i++)
{
temp1 = temp1->next;
}
Node* temp2 = temp1->next;
temp1->next = temp2->next;
delete temp2;
}
int main()
{
for(int n=1;n<=5;n++)
{
Node* p=new Node;
p->val =n;
p->next =head;
head=p;
}
Delete(3);
for(Node* p=head;p;p=p->next )
{
cout<<p->val <<" ";
}
return 0;
}
链表的插入
#include<iostream>
using namespace std;
struct Node
{
int val;
Node *next;
}*head;
void Insert(int val,int n)
{
Node* temp1 = new Node;
temp1->val = val;
temp1->next=nullptr;
if(n==1)
{
temp1->next=head;
head=temp1;
return;
}
Node* temp2=head;
for(int i=1;i<n-1;i++)
{
temp2=temp2->next;
}
temp1->next=temp2->next;
temp2->next = temp1;
}
int main()
{
for(int i=1;i<=5;i++)
{
Node* p=new Node();
p->val =i;
p->next =head;
head=p;
}
Insert(55,3)
for(Node* p=head;p;p=p->next )
{
cout<<p->val <<" ";
}
return 0;
}
链表的反转
#include<iostream>
using namespace std;
struct Node
{
int val;
Node* next;
}*head;
void fz()
{
Node* prev = NULL;
Node* curr=head;
Node* next;
while(curr!=NULL)
{
next = curr->next ;
curr->next = prev;
prev = curr;
curr = next;
}
head = prev;
}
int main()
{
for(int i=1;i<=5;i++)
{
Node* p = new Node();
p->val = i;
p->next = head;
head = p;
}
fz();
for(Node* p = head;p;p=p->next )
{
cout<<p->val<<" ";
}
return 0;
}
双向链表
1.建立双向链表
#include<iostream>
using namespace std;
struct Double_Node
{
int val;
Double_Node* next;
Double_Node* prev;
}*head;
int main()
{
for(int i=1;i<=3;i++)
{
Double_Node* p=new Double_Node;
p->val =i;
p->next =head;
head=p;
if(i!=1)
{
head->next->prev=p;
}
}
for(Double_Node*p =head;p;p=p->next )
{
cout<<p->val <<" ";
}
return 0;
}
2.双向链表的删除
#include<iostream>
using namespace std;
struct Node
{
int val;
Node* next;
Node* syg;
}*head;
void Delete(int n)
{
Node* temp1=head;
if(n==1)
{
head=temp1->next;
head->syg = NULL;
delete temp1;
return;
}
for(int i=1;i<n-1;i++)
{
temp1 = temp1->next ;
}
Node* temp2 = temp1->next;
if(temp2->next != NULL)
{
temp1->next = temp2->next;
temp1->next->syg = temp1;
}
else
{
temp1->next =NULL;
}
delete temp2;
return;
}
int main()
{
for(int i=1;i<=3;i++)
{
Node* p=new Node;
p->val=i;
p->next=head;
head=p;
if(i!=1)
{
p->next->syg=p;
}
}
Delete (3);
for(Node* p=head;p;p=p->next )
{
cout<<p->val <<" ";
}
return 0;
}

浙公网安备 33010602011771号