当前位置:   article > 正文

简单双向链表 插入_双向链表的插入过程

双向链表的插入过程

简单双向链表

话不多说,直接上码:

#include<iostream>
using namespace std;

typedef struct node{
int data;
struct node* pre;
struct node* next;
}dnodelist;

dnodelist * createNodelist()
{
	int num; 
	dnodelist *H ,*p, *r;
	if((H = (dnodelist *)malloc(sizeof(dnodelist))) == NULL)
	{
		cout<<"malloc filed!"<<endl;
		return NULL;
	}
	H->pre = H;
	H->next = H;//创建完头节点;
	r = H; 
	while(1)
	{
		cout<<"亲输入你的数字吧"<<endl;
		cin >> num;
		if((p = (dnodelist *)malloc(sizeof(dnodelist))) == NULL)
		{
			cout<<"malloc filed!"<<endl;
			return NULL;
		}
		p->data = num;
		
		p->next = r->next;//增加节点四个步骤;
		r->next = p;
		p->pre = r;
		H->pre = p;
		r = p;//r 指针一直在移动;
	}
	return H;
}
void displayDnodelist(dnodelist *H)
{
	dnodelist *p;
	p = H->next;
	while(p != H)
	{
		cout<<p->data<<" ";
		p = p->next;
	}
	cout<<endl;
}
int main()
{
	displayDnodelist(createNodelist());
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

难点:
主要是在节点的插入过程,可以分为4步,如下图

在这里插入图片描述
r = p ,r 一直保持在最后一位;

基本思想就是这样啦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/456477
推荐阅读
相关标签
  

闽ICP备14008679号