6-5-链式表操作集-函数题

6-5-链式表操作集-函数题

解题代码

Position Find(List L, ElementType X) {
	Position loc = ERROR;
	if (L) {
		List t = L;
		while (t) {
			if (t->Data == X) {
				loc = t;
				break;
			}
			else {
				t = t->Next;
			}
		}
	}
	return loc;
}
ElementType Legal(List L, List P) {
	ElementType ret = 0;
	if (!L) {
		if (!P) ret = 1;
	}
	else {
		if (!P) ret = 1;
		else {
			List t = L;
			while (t) {
				if (t == P) {
					ret = 1;
					break;
				}
				else {
					t = t->Next;
				}
			}
		}
	}
	return ret;
}
List Insert(List L, ElementType X, Position P) {
	List new = ERROR;
	ElementType flag=Legal(L, P);
	if (flag) {
		List add = (List)malloc(sizeof(struct LNode));
		add->Data = X;
		add->Next = P;
		List t = L;
		if (!t)	new = add;
		else {
			if (t == P) new = add;
			else {
				while (t) {
					if (t->Next == P) {
						t->Next = add;
						new = L;
                        break;
					}else{
                        t=t->Next;
                    }
                   
				}
			}
		}
	}
	else {
		printf("Wrong Position for Insertion\n");
	}
	return new;
}
List Delete(List L, Position P) {
	List new = ERROR;
	ElementType flag = Legal(L, P);
	if (flag) {
		if (L) {
			if (!P) new = L;
			else {
				List p = L, t = p->Next;
				if (P == p) {
					free(P); 
					new = t;
				}
				else {
					while (p) {
						if (t == P) {
							t = t->Next;
							p->Next = t;
							free(P);
							new = L;
                            break;
						}
						else {
							p = t;
							t = t->Next;
						}
					}
				}
			}
		}
	}
	else {
		printf("Wrong Position for Deletion\n");
	}
	return new;
}

测试结果

在这里插入图片描述

问题整理

1.小心忘记break导致的段错误。
2.小心循环体内循环判断条件出错导致的运行超时。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值