限制长度双向链表的插入操作

本文介绍了在面试中遇到的如何实现一个限制长度为100的双向链表插入操作,根据score值动态插入链表头部、尾部或中间,并在遍历时统计链表长度。当链表满100且新元素在末尾时,不执行插入操作。已验证代码正确性。
摘要由CSDN通过智能技术生成

    面试遇到的问题,一开始面试官是问我有什么方案可以实现排行榜,当时给出了两个方案。后面面试官又在我的其中一种方案上让我手写代码实现排序双线链表的插入,根据score值插入,并且链表长度限制在100。

    需要考虑的点:1)插入在链表表头的;2)插入到链表表尾;3)插入到链表中间;4)需要在遍历整个链表的时候统计链表的长度;5)如果长度刚好在100而插入刚好在末尾,则此时不需要执行插入操作。完整代码如下

#include <iostream>

using namespace std;

#define MAX_RANK 100

struct Link {
	int score;
	int uid;
	Link* prev;
	Link* next;
	Link() {
		score = 0;
		uid = 0;
		prev = NULL;
		next = NULL;
	}
};

Link* initLink(int n) {
	if (n <= 0) {
		return NULL;
	}
	int i = n;
	Link *head = new Link;
	head->score = i * 2;
	Link *node = head;
	while (i > 1) {
		i--;
		node->next = new Link;
		node->next->score = i * 2;
		node->next->prev = node;
		node = node->next;
	}
	return head;
}

void freeLink(Link *L) {
	Link *node = NULL;
	while (L) {
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值