用java写个顺序表插入算法的实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java写个顺序表插入算法的实现?相关的知识,希望对你有一定的参考价值。

给个代码

int insert( struct student *head, int i )

struct student *p,*q;
q = locate( head, i );
/*调用链表定位函数,获取序号i结点的指针*/
if(q == NULL) return 0;
/*找不到序号i对应的位置,返回0,表示插入失败*/
p=(struct student*) malloc(sizeof(struct student));
/*申请新结点*/
printf ( "Input No:" );
scanf ( "%d", &p-> no );
printf ( "Input Name:" );
scanf ( "%s", p-> name );
p-> next = q-> next; /*新结点的next指针的处理*/
q-> next = p; /*定位结点的next指针处理*/
return 1; /*返回1,表示插入成功*/

int delete ( struct student *head,int i )

struct student *p, *q;
/*调用链表定位函数,获取序号i结点的指针*/
q = locate ( head, i– 1 );
if ( q == NULL ) return 0;
/*找不到序号i-1对应的位置,返回0,表示删除失败*/
/*找序号i对应的位置*/
p = q -> next;
if(p == NULL) return 0;
/*找不到序号i对应的位置,返回0,表示删除失败*/
q-> next = p-> next;
free(p); /*释放结点内存*/
return 1; /*返回1,表示删除成功*/
参考技术A package dengjianming20121127;
//------------------接口-------------------------------
interface IList

public void clear();
public boolean isEmpty();
public int length();
public Object get(int i);
public void insert(int i,Object x);
public void remove(int i);
public int indexOf(Object x);
public void display();

//-----------------SqList类---------------------------
class SqList implements IList

private Object listElem[];//线性表存储空间
private int curLen=25;//线性表的当前长度
SqList(int maxSize)//顺序表的构造函数,构造一个存储空间容量为maxSize的线性表

curLen=0;
listElem=new Object[maxSize];

//将一个已经存在的表置成空表
public void clear()

curLen=0;
listElem=new Object[curLen];

public boolean isEmpty()

return curLen==0;

public int length()

return curLen;

public Object get(int i)

if(i<0||i>curLen-1)
System.out.println("第"+i+"个元素不存在");
return listElem[i-1];

public void insert(int i,Object x)

if(curLen==listElem.length)
System.out.println("顺序表已满");
if(i<0||i>curLen)
System.out.println("插入位置不合法");
for(int j=curLen;j>i;curLen--)

listElem[j]=listElem[j-1];

listElem[i]=x;
curLen++;

public void remove(int i)

if(i<0||i>listElem.length-1)

System.out.println("删除位置不合法");

for(int j=listElem.length;j>i;j--)

listElem[j-1]=listElem[j];

curLen--;

public int indexOf(Object x)

int j=0;
while(j<curLen&&!listElem[j].equals(x))
j++;
if(j<curLen)
return j;
else
return -1;

public void display()

for(int i=0;i<=curLen-1;i++)

System.out.print("\t"+listElem[i]);



//-----------------主函数------------------------------
public class Minge1
public static void main(String args[]) throws Exception

SqList L=new SqList(10);
L.insert(0,'a');
L.insert(1,'z');
L.insert(2,'d');
L.insert(3,'m');
L.insert(4,'z');
int order=L.indexOf('z');
if(order!=-1)

System.out.println("顺序表中第一次出现的值为'z'的数据位序为;"+order);

else
System.out.println("此顺序表中不包含值为'z'的数据元素!");

参考技术B 这个是宏定义:
public class Node

private int data;
private Node next;

public Node(int data)
this.data = data;
this.next = null;


public void setData(int data)
this.data = data;


public int getData()
return data;


public Node getNext()
return next;


public void setNext(Node next)
this.next = next;




/**
*功能:单链表定义
* */

//这是你要的方法
public class LinkList

Node head;

public LinkList()
head = null;




LinkList r = new LinkList();
r.head = new Node(arrs[0]);
Node n = r.head;

for(int i = 1;i<arrs.length;i++)
Node na = new Node(arrs[i]); n.setNext(na); n=n.getNext();

Node p = l.head;
if(idx<1)n.setNext(l.head); l.head = r.head;
if(idx>arrs.length) while(p.getNext()!=null) p=p.getNext(); p.setNext(r.head);
else int i = 1; while(p!=null) if(i==idx) n.setNext(p.getNext()); p.setNext(r.head); break; else p=p.getNext(); i++;
return l;
参考技术C public static void listInsert_L(LinkList la,int i,int data)
LinkList temp = la;
int a = i;
while(a>1)
if(temp==null)//error
System.out.println("error");
return;

temp = temp.next();
a--;

LinkList node = new LinkList(data);//call constrator
node.next = temp.next());
temp.next = node;

顺序表插入删除算法用C语言来实现

#include<stdio.h>

#include<stdlib.h>

//-------- 线性表的动态分配顺序存储结构 -----------

int LIST_INIT_SIZE=100;   //顺序表存储空间初始尺寸

int LISTINCREMENT=10;  //顺序表存储空间分配增量

typedef  int  ElemType;          //顺序表元素的数据类型为整数

//存储结构定义:顺序表

typedef struct

       ElemType *elem;  //存储线性表元素的数组

       int length;        //表长度

       int listsize;       //存储容量

       int incrementsize;  //扩展增量

SqList;

//-------- 线性表的基本运算 -----------------------------

//辅助函数:显示顺序表元素

void print_Sq (SqList L)

       for(int i=0; i<L.length; i++)  printf("%5d", L.elem[i]);

       printf("\n");

//运算1:初始化空顺序表L

void InitList_Sq(SqList *L, int initsize, int incresize) // 算法2.4

  L->elem = (ElemType *)malloc(initsize*sizeof(ElemType)); //分配数组空间

  L->length=0;  //表长度初值为0

  L->listsize=initsize; //表空间初始尺寸

  L-> incrementsize = incresize;

//运算2:销毁顺序表L// 算法2.8

void DestroyList_Sq(SqList *L)

  free(L->elem); //释放表的数组存储空间

       L->elem=NULL; //清空指向数组的指针及表示表长度、数组尺寸的指示变量

       L->length=0;

       L->listsize=0;

//运算3:在顺序表L中第i个位置前插入新元素e

void ListInsert_Sq (SqList *L,  int i,  ElemType  e)

if(i < 1 || i > L->length+1)

        return ERROR;//   i值不合法

       //动态扩展空间,每次空间不足,空间长度增加 LISTINCREMENT

    if(L->length == L->listsize)

   

        ElemType * increspace = (ElemType *)realloc(L->elem,(L->listsize + LISTINCREMENT) * sizeof(ElemType));

        if(! increspace)

            exit(OVERFLOW);

        L->elem = increspace;

        L->listsize += LISTINCREMENT;

   

       for(int j=L->length-1;j>i-1;j--)

      

              L->elem[j+1]=L->elem[j];

      

       L->elem[i-1]=e;

       L->length++;

       return OK;

//运算4:在顺序表L中删除第i个元素,用输出变量e返回其值

void ListDelete_Sq (SqList *L,  int i,  ElemType*  e) //算法2.7

       *e=L->elem[i-1];

       printf("删除的第%d的元素为:%d\n",i,*e);

       for(int j=i-1;j<L->length;j++)

      

              L->elem[j]=L->elem[j+1];

      

       L->length--;

//运算5:在顺序表L中找到第i个值与e相等的元素,返回其位序,否则返回0

int LocateElem_Sq (SqList  L,  ElemType  e) //算法2.5

for(int i=0;i<L.length;i++)

      

              if(L.elem[i]==e)

                     return i+1;

      

       return 0;

以上是关于用java写个顺序表插入算法的实现?的主要内容,如果未能解决你的问题,请参考以下文章

如何用JAVA语言建立含有若干个元素的顺序表,并实现插入,删除,查找等基本操作

顺序表和链表的基本操作,用C语言实现!

数据结构,用JAVA编写顺序表

c语言实现两个顺序表的合并

数据结构 c语言版 ——顺序表的查找、插入与删除

数据结构 线性表 用c语言