#链表的初始化,插入,删除,查找

链表的初始化,插入,删除,查找

初始化链表

初始化单链表 InitList

void InitLinkList(LinkList& L)
{
	L = (Node*)malloc(sizeof(Node));
	L->next = NULL;
}

在指定位置pos插入element

void InsertLinkList(LinkList& L, int pos, ElementType element)
{
	LinkList p, s;
	int j;
	p = L;
	for (j = 0; j < pos - 1; j++)
		p = p->next;
	if (!p->next || j > pos - 1)
		printf("插入位置不合法\n");
	s = (Node*)malloc(sizeof(Node));
	s->data = element;
	s->next = p->next;
	p->next = s;

}

在指定的位置删除元素

在指定的位置pos插入元素element

void InsertLinkList(LinkList& L, int pos, ElementType element)
{
	LinkList p, s;
	int j;
	p = L;
	for (j = 0; j < pos - 1; j++)
		p = p->next;
	if (!p->next || j > pos - 1)
		printf("插入位置不合法\n");
	s = (Node*)malloc(sizeof(Node));
	s->data = element;
	s->next = p->next;
	p->next = s;

}

查找元素

int LocateList(LinkList& L, ElementType element)
{
	LinkList p;
	int j = 1;
	p = L->next;
	while (p && p->data != element)
	{
		p = p->next;  j++;
	}
	if (p) return j;
	else return 0;

}

取值

ElementType GetLinkList(LinkList& L, int pos)
{
	Node* p = L->next;
	int i = 1;
	while (p && i < pos)
	{
		p = p->next;
		i++;
	}
	return p->data;

}

创建并打印链表元素

void CreateList(LinkList& L, int n)
{
	InitLinkList(L);
	LinkList p, r = L;
	int i;
	for (i = 0; i < 5; i++)
	{
		p = (Node*)malloc(sizeof(Node));
		scanf_s("%c", &p->data);
		p->next = NULL;
		r->next = p;
		r = p;
	}


}
void PrintLinkList(LinkList& L)
{
	Node* p = L->next;
	if (!p)
	{
		printf("链表为空!");
	}
	while (p)
	{
		printf("%c\n", p->data);
		p = p->next;
	}
}


void main()
{
	LinkList L;
	ElementType element;
	int pos;
	//依次采用尾插法插入 a、b、c、d、e 元素;
	CreateList(L, 5);
	//输出链表元素;
	PrintLinkList(L);
	//取链表 L 的第 3 个元素
	element = GetLinkList(L, 3);
	printf("链表的第3个元素为%c\n", element);
	//查找并输出元素 b 的位置
	pos = LocateList(L, 'b');
	printf("元素b在链表的第%d个位置\n", pos);
	//在第 4 个元素位置上插入 f 元素;
	InsertLinkList(L, 4, 'f');
	printf("插入新元素后的链表元素:\n");
	PrintLinkList(L);
	//删除链表L的第2 个元素
	DeleteLinkList(L, 2);
	printf("删除后的链表元素:\n");
	PrintLinkList(L);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值