pub mod array;
pub mod list_node;
pub mod stack;
pub mod stack_raw;
pub mod string;
pub mod queue;
pub mod list;
pub mod list_raw;
pub trait List<T>
where T: Clone
{
fn init_list() -> Self;
fn destroy_list(self);
fn clear_list(&mut self);
fn list_empty(&self) -> bool;
fn list_length(&self) -> usize;
fn get_elem(&self, i: usize) -> Option<T>;
fn locate_elem(&self, e: T) -> usize;
fn prior_elem(&self, cur_e: T, _pre_e: &T) -> Option<T>;
fn next_elem(&self, cur_e: T, _next_e: &T) -> Option<T>;
fn list_insert(&mut self, i: usize, e: T) -> Result<(), crate::Err>;
fn list_delete(&mut self, i: usize) -> Result<(), crate::Err>;
fn traverse_list(&self); }