双向链表尾插法(二)

 双向链表尾插法

#include <iostream>
using namespace std;
typedef struct Node pNode;
struct Node{
    int data;
    pNode *prev,*next;
    Node(const int& d):data(d),prev(NULL),next(NULL){}
  };

/* 初始化链表,尾插法 */
pNode *insert(pNode *head/* or *&head */, int n){//*&head:指针的引用,此时**head本身不能改变,指向头节点;改变的是指向的指针*head.
  pNode *p, *s;//p:游标 s:新申请节点
  head = new Node(0);
  head->next = NULL;//head的prev和next均指向NULL
  head->prev = NULL;
  p = head;//p指向head
  for(int i = 0; i < n; i++){
    s = new Node(i);
    p->next = s;//游标p->next指向新申请节点
    s->prev = p;//s前驱指针指向p
    p = s;//游标p向后移动,p=s,p->next=s->next;
  }
  s->next = NULL;
  return head;
}

void print(pNode *head){
  while(head->next){
    //cout <<"head->next: "<< head->next<<endl;
    head = head->next;
    cout << head->data << " ";
  }
  cout << endl;
}

int main(){
  pNode *head, *new_head;
  new_head = insert(head, 5);//初始化链表并赋值,返回尾节点last
  print(new_head);
  return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android系统攻城狮

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值