Algorithms and Data Structures COMP3506

Getting Started
Before we get into the nitty gritty, we will discuss the skeleton codebase that will form the basis of your implementations, and provide some rules that must be followed when implementing your solutions.
iuww520iuww520iuww520iuww520iuww520iuww520iuww520iuww520
1.1 Codebase
The codebase contains a number of data structures stubs that you should implement, as well as some scripts that allow your code to be tested. Figure 1 shows a snapshot of the project directory tree with the different files categorized.
test_structures.py
test_warmup.py
test_kmers.py
structures
dynamic_array.py
linked_list.py
bit_vector.py
warmup
warmup.py
malloclabs
kmer_structure.py
analysis.txt
generate_dna.py
Figure 1 The directory tree is organized by task. Blue represents directories, Teal represents files that contain implementations (but are not executable), and Orange represents executable files.
1.2 Implementation Rules
The following list outlines some important information regarding the skeleton code, and your implementation. If you have any doubts, please ask on Ed discussion.
❙ The code is written in Python and, in particular, should be executed with Python 3 or higher. The EAIT student server, moss , has Python 3.11.* installed by default. We recommend using moss for the development and testing of your assignment, but you can use your own system if you wish.
You are not allowed to use built-in methods or data structures -- this is an algorithms and data structures course, after all. If you want to use a dict (aka {} ), you will need to implement that yourself. Lists can be used as "dumb arrays" by manually allocating space like myArray = None * 10 but you may not use built-ins like append, clear, count, copy, extend, index, insert, pop, remove, reverse, sort, min, max, and so on. List slicing is also prohibited, as are functions like sorted, len, reversed, zip .
Be sensible -- if you need the functionality provided by these methods, you may implement them yourself. Similarly, don't use any other collections or structures such as set or tuple (for example; mytup = ("abc", 123) ).
❙ You are not allowed to use libraries such as numpy , pandas , scipy , collections , and so on.
❙ Exceptions: The only additional libraries you can use are random and math . You are allowed to use range and enumerate to handle looping. You can also use for item in my_list looping over simple lists.
2 Task 1: Data Structures (5 marks)
We'll start off by implementing some fundamental data structures. You should write your own tests. We will try to break your code via (hidden) corner cases. You have been warned.
Task 1.1: Doubly Linked List (1.5 Marks)
Your first task is to implement a doubly linked list --- your first "pointer-based" data structure.
To get started, look at the linked_list.py file. You will notice that this file contains two
classes: the Node type, which stores a data payload, as well as a reference to the next node;
and the DoublyLinkedList type which tracks the head and tail of the list, as well as the number
of nodes in the list.
A basic set of functions that you need to support are provided as function templates, and you will need to implement them. You will also notice that there may be some changes or modifications required to the data structures to support the necessary operations -- feel free to add member variables or functions, but please do not change the names of the provided functions as these will be used for marking.
You will need to implement your own tests and run them using: python3 test_structures.py --linkedlist.

相关推荐
金融小师妹7 分钟前
AI趋势识别:黄仁勋宣布“AGI时代”到来,Astra能力跃迁背后的AI安全边界
大数据·python·深度学习·重构·逻辑回归
2501_941875283 小时前
从配置中心到动态管理的互联网工程语法演进与多语言实践分享
开发语言·python
hfywmsj3 小时前
广州餐饮铺位招租决策模型:多因子选址系统设计
开发语言·人工智能·python·广州餐饮铺位招租
泡海椒6 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb6 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
sanjiaomao3337 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
linweidong9 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界9 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎9 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
小刘在重生~10 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存