java写算法不能用指针_指针算法不在链表指针中工作?

我有一个链表,我想减少指向链表指针的指针,但是有一些问题 .

对于以下C程序:

#include

#include

struct node

{

int data;

struct node *next;

};

int main()

{

/*Create an empty list*/

struct node *head = NULL;

/*Set the first node of list*/

head = malloc(sizeof(struct node));

head->data = 1;

head->next = NULL;

struct node *head1 = head;

/*Set the second node of list*/

head1->next = malloc(sizeof(struct node));

head1 = head1->next;

head1->data = 2;

head1->next = NULL;

/*Print 1st and 2nd node data*/

printf("%d ",head->data);

head = head->next;

printf("%d ",head->data);

/*Decrement head. As head was pointing to 2nd node, after head-- it should point to first node ??*/

head--;

printf("%d \n",head->data);

return 0;

}

我期待低于输出:

1 2 1

但是我得到低于输出:

User $ ./a.out

1 2 0

User $

所以看起来我最后做的 head-- 并没有真正减少 head 为1(如果它确实 head 指向执行最后一次printf之前的第一个节点) .

所以不能递增或递减链表指针?就像我们为普通指针做的那样?例如:对于a []我们做a或a--指出下一个或宝贵的索引 .

注意:我只是意识到链接列表节点不在一个连续的存储位置,所以做头 - 指向以前的节点不会感觉到 .

谢谢所有回答或评论的人 .

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值