栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

完善insert函数执行

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

完善insert函数执行

#include
#include
#include

typedef struct node
{
	struct node* prev;//前一个结点
	int data;
	struct node* next;//下一个结点
}*PNODE, NODE;

PNODE create(int data)
{
	PNODE p = (PNODE)malloc(sizeof(NODE));//定义一个结点
	p->prev = NULL;
	p->data = data;
	p->next = NULL;  
	return p;
}
PNODE header;//头结点
PNODE ender;//尾结点
void add(PNODE node)//尾部追加
{
	if (header == NULL)//空表
	{
		header = node;
		ender = node;
		return;
	}
	ender->next = node;
	ender = node;
}



void insert_behind(int index, PNODE node)//index 下标,node 新结点
{
	PNODE p = header;//开始指向头结点
	if (header == NULL)//头结点为空
	{
		add(node);
		return; //if中使用return,提前结束函数执行
	}

	for (int i = 0; i < index && p != NULL; i++)
	{
		p = p->next;
	}
	if (p == NULL)//p超过范围,调用add函数,加到最后位置
	{
		add(node);
		return;
	}
	//在p的后面插入
	node->next = p->next;
	p->next = node;
	if (node->next == NULL)//当新结点被插到最后,尾结点就是node;
	{
		ender = node;
	}
	
}

	int main() {
		ender = header = NULL;
		add(create(1));//0
		add(create(2));//1
		add(create(3));//2
		add(create(4));//3
		insert_behind(10, create(666));
		{
			PNODE p = header;
			while (p != NULL)
			{
				printf("%dn", p->data);
				p = p->next;
			}
		}

		return 0;
	
 }

	

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/512815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号