1、Java实现顺序表 接口类定义如下所示:
package c03;
/**
* @description Java 实现顺序表的基本操作
*
* @author LT
* @date 2020/4/19
*/
public interface ISequence {
/**
* 在 pos 位置插入 val
*
* @param pos
* @param val
* @return
*/
boolean add(int pos, Object val);
/**
* 查找关键字 key 找到返回 key 的下标,没有返回 -1
*
* @param key
* @return
*/
int search(Object key);
/**
* 查找是否包含关键字 key 是否在顺序表当中
*
* @param key
* @return
*/
boolean contains(Object key);
/**
* 得到 pos 位置的值
*
* @param pos
* @return
*/
Object indexOf(int pos);
/**
* 除第一次出现的关键字 key
*
* @param key
* @return
*/
Object remove(Object key);
/**
* 得到顺序表的长度
*
* @return
*/
int size();
/**
* 打印顺序表
*/
void display();
/**
* 清空顺序表以防内存泄漏
*/
void clear();
}
2、C实现顺序表基本操作
#include <stdio.h>
#define MAX 10
struct SList{
int data[MAX];
int length;
};
void init(struct SList* p){
p->length = 0;
}
void printList(const struct SList* p){
int i=0;
for(i; i<p->length; i++){
printf("%d ",p->data[i]);
}
putchar('\n');
}
int insert(struct SList* p, int k, int x){
// length -1 length
if (k<0 || k>p->length || p->length == MAX){
return 0;
}
else {
int i=p->length-1;
for(i; i>=k; i--){
p->data[i+1] = p->data[i];
}
p->data[k] = x;
p->length++;
return 1;
}
}
int delete(struct SList* p, int k, int* px){
if (k<0 || k >= p->length) {
return 0;
} else {
*px = p->data[k];
int i = k +1;
for (i; i<p->length;i++) {
p->data[i-1] = p->data[i];
}
p->length--;
return 1;
}
}
int main(){
struct SList a;
// 初始化
init(&a);
// 打印
printList(&a);
// 插入
insert(&a,0,11);
insert(&a,0,22);
insert(&a,1,33);
printList(&a);
// 删除
int x;
delete(&a,1,&x);
delete(&a,1,&x);
printList(&a);
return 0;
}
3、Python 实现顺序表基本操作
#!usr/bin/env python
# -*- encoding=utf8 -*-
'''
线性表的顺序结构
'''
__author__ = "LT"
a = list()
a.append(11)
a.append(22)
a.append(22)
print(a)
a.remove(22)
print(a)
a.pop(0)
print(a)
详细源码参考地址:
https://github.com/jackaroo2020/my-algorithm
此文为个人《数据结构与算法》学习笔记,如果文章中有什么不恰当之处,欢迎各位指正,谢谢!