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

链表(尾插法实现链表)

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

链表(尾插法实现链表)

#include
#include
#include

typedef struct NODE
{
	struct NODE*pnext;
	int data;
}NODE, *PNODE;

PNODE create_list1(void);//头插法
PNODE create_list2(void);//尾插法
bool is_empty(PNODE p);
int lenth(PNODE phead);
bool traverse_list(PNODE);
bool sort_list(PNODE);
bool delete_list(PNODE, int, int*);
bool insert_list(PNODE, int, int);

int main(void)
{
	int f;
	int x;
	PNODE phead = create_list1();
	traverse_list(phead);
	sort_list(phead);
	traverse_list(phead);
	f = lenth(phead);
	printf("%dn", f);
	delete_list(phead, 3, &x);
	traverse_list(phead);
	insert_list(phead, 4, 5);
	traverse_list(phead);
	return 0;
}

PNODE create_list1(void)//头插法
{

	PNODE phead = (PNODE)malloc(sizeof(NODE));
	if (NULL == phead)
	{
		printf("分配失败!");
		exit(-1);
	}
	int len = 0;
	int i = 0;
	scanf("%d", &len);
	PNODE ptail = phead;
	ptail->pnext = NULL;
	for (i = 0; i < len; i++)
	{
		printf("请输入第%d个元素", i + 1);
		int val;
		scanf("%d", &val);
		PNODE pnew = (PNODE)malloc(sizeof(NODE));
		if (NULL == pnew)
		{
			printf("分配失败");
			exit(-1);
		}
		pnew->data = val;
		ptail->pnext = pnew;
		pnew->pnext = NULL;
		ptail = pnew;
	}
	return phead;
}
bool traverse_list(PNODE phead)
{
	if (is_empty(phead))
	{
		return false;
	}
	else
	{
		PNODE p;
		p = phead->pnext;
		while (p != NULL)
		{
			printf("%d", p->data);
			p = p->pnext;
		}
	}
	printf("n");
	return true;
}

bool is_empty(PNODE phead)
{
	if (phead->pnext == NULL)
	{
		return true;
	}
	else
	{
		return false;
	}
}

int lenth(PNODE phead)
{
	int x = 0;
	PNODE p;
	p = phead->pnext;
	while (p != NULL)
	{
		x++;
		p = p->pnext;
	}
	return x;
}

bool sort_list(PNODE phead)//从大到小进行排序
{
	int i, h,tem;
	PNODE p1,p2;
	int len = lenth(phead);
	for(i=0,p1=phead->pnext;ipnext)
		for (h = i + 1,p2=p1->pnext;h < len; h++,p2=p2->pnext)
		{
			if (p2->data > p1->data)
			{
				tem = p1->data;
				p1->data = p2->data;
				p2->data = tem;
			}
		}
	return true;
}

bool delete_list(PNODE phead,int x,int* y)
{
	int i = 0;
	PNODE p = phead;
	while (p->pnext != NULL && i < x - 1)
	{
		i++;
		p = p->pnext;
	}
	if (i > x - 1 || p->pnext == NULL)
		return false;
	*y = p->data;
	PNODE q = p->pnext;
	p->pnext = p->pnext->pnext;
	free(q);
	q = NULL;
	return true;
}

bool insert_list(PNODE phead, int x, int y)//x代表所处位置,代表要插入的数值
{
	int i=0;
	PNODE p = phead;
	while (p->pnext != NULL && i < x - 1)
	{
		i++;
		p = p->pnext;
	}
	if (i > x - 1 || p->pnext == NULL)
		return false;
	PNODE pnew = (PNODE)malloc(sizeof(NODE));
	pnew->pnext = p->pnext;
	pnew->data = y;
	p->pnext = pnew;
}

附带删除插入代码

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

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

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