链表

  • 创建链表
    链表是用于存储数据的一种数据结构,它由一个一个的结点连接组成,链表头是指向头结点的指针,链表尾是空指针nullptr。每个结点分为两个部分,一个部分用于存储数据,一个部分用于存储指向下一个链表的指针,下面是创建链表的几种方式
  1. 不使用构造函数,创建一个包含两个结点的链表:
#include <iostream>
using namespace std;
//不用构造函数创建链表
struct ListNode{
double value;
ListNode* next;
};

int main() {
  ListNode* head = new ListNode;
      ListNode* secondPtr = new ListNode;
      head->value = 12.5;
      head->next = secondPtr;
      secondPtr->value = 13.5;
      secondPtr->next = nullptr;
  cout<<head->value<<endl;
      cout<<secondPtr->value<<endl;
  return 0;
}
  1. 使用构造函数创建链表
#include <iostream>
using namespace std;
//用构造函数创建链表
struct ListNode{
double value;
ListNode* next;
ListNode(double val,ListNode* ptr=nullptr):value(val),next(ptr){}//next指针默认值为nullptr
};

int main() {
  ListNode* head = new ListNode(13.5);
  head = new ListNode(12.5,head);//该语句将从右到左评估,首先在构造函数中使用 head 的旧值,然后从 new 运算符返回的地址将被分配给 head,成为它的新值
  head = new ListNode(11.5,head);
  cout<<head->value<<endl;
  return 0;
}
  • 遍历链表
#include <iostream>
using namespace std;
//遍历链表
struct ListNode{
   double value;
   ListNode* next;
   ListNode(double value,ListNode* next=nullptr):value(value),next(next){cout<<"构造了一个链表结点!"<<endl;}
};

int main() {
   ListNode* numberList = new ListNode(12.5);
   for(int i = 0;i<5;i++){
       numberList = new ListNode(i*6.5,numberList);
   }
   ListNode* ptr = numberList;
   //开始遍历链表并打印值
   while(ptr != nullptr){
       cout<<ptr->value<<" ";
       ptr = ptr->next;
   }
   return 0;
}
posted @ 2021-08-05 16:49  智子lock  阅读(57)  评论(0编辑  收藏  举报