指针操作 和链表

若p1和p2是指针变量那么p1=p2 会修改p1的值使其指向p2 当前所指向的东西。

使用new会为动态变量保存一个特殊的内存区域,自由自由存储区,也称堆。

为一个指针变量使用delete 时候 它所指向的动态变量会被销毁,之后指针变量进入未定义的状态,也就是说你不知道它指向哪里,也不知道它指向的地方有什么价值,如果另一个指针变量指向被销毁的动态变量,那个指针变量也会进入为定义的状态,这些未定义的指针变量成为虚悬指针。假定p 是一个虚悬指针,那么提领操作符*应用与p 生成*p将产生不可预料的结果。


链表 的指针指向的是整个节点,而不是只想节点内部的某个单独的项目。

(*head).count=12;
原点操作符的优先级高于提领操作符。
箭头操作符->合并了提领操作符和原点操作符。
head->count=12;
链表的第一个节点称为表头(head) 我们将第一个指向表头的指针变量命名为head  名为head的指针本身并不是表头,它只是指向表头。
struct Node
{ 
	int data;
	Node *link;
};
typedef Node* Nodeptr;
void head_insert(Nodeptr& head,int the_number);
void head_insert(Nodeptr& head,int the_number)
{
	Nodeper temp_ptr;
	temp_ptr=new Node;			//申请空间
	temp_ptr->data=the_number;
	temp_ptr->link=head;
	head=tem_ptr;				//指向head 节点       
}
为了避免节点丢失,程序必须一直让某个指针指向表头,通常就是head 中的那个指针。
struct Node
{ 
	int data;
	Node *link;
};
typedef Node* Nodeptr;
void search(Nodeptr head,int target);
void search(Nodeptr head,int target)
{
	Nodeper here=head;
	if(here==null)
	{return null};
	else
	{while(here->link!=null&&here->data!=target)
		here=here->link;
	if(here->data==target)
		return here;
	else 
		return null;}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值