c++复习【学习日常】【链表】【小白向】【大佬轻点喷】

c++小白由于上课没好好听寒假复习了一下链表

ps:本文章部分内容参考<https://blog.csdn.net/weixin_46629453/article/details/125643226?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170580814716800222897948%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170580814716800222897948&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-125643226-null-null.142^v99^pc_search_result_base5&utm_term=%E5%8D%95%E9%93%BE%E8%A1%A8%E4%B9%8B%E5%A4%B4%E6%8F%92%E6%B3%95%E5%92%8C%E5%B0%BE%E6%8F%92%E6%B3%95&spm=1018.2226.3001.4187>
  1. 头插法(带头结点)

    void create_head(node *&head)
    {
       head = new node;//新建头结点并初始化
       head->next = NULL;
       int n;
       cin >> n;
       while (n)
      {
          node* p;//创建新结点
          p= new node ;
          p->data = n;
          p->next = head->next;//核心代码
          head->next = p;//核心代码
          cin >> n;
       }
    }
    
  2. 尾插法(带头结点)

    void create_tail(node *&head)
    {
    	head = new node;//创建头结点并初始化
    	head->next = NULL;
    	node* r;
    	r = head;
    	int n;
    	cin >> n;
     	while (n)
    	{
    		node* p;
    		p = new node;//创建新结点
     		p->data = n;
    		p->next = NULL;
    		r->next = p;//核心代码
    		r = p;//r始终为尾结点
    		cin >> n;
        }
    }
    
  3. 遍历并输出链表中的数据

    void show( node *head)
    {
        while (head->next!=NULL)
        {
            cout << head->next->data << " ";
            head = head->next;
        }
        cout << endl;
    }
    
1 个赞

有空的话可以看看linux内核的链表实现学习一下

对,linux内核的链表实现了很多功能,蛮全面的。