數據結構之鏈表實現

C語言

#include <stdio.h>
#include <malloc.h>
#define elemtype int
typedef struct Lnode{
    struct Lnode *next;
    elemtype data;
}* LinkList, Lnode;//定義鏈表

void linkList_traverse(LinkList &L){
    LinkList p=L;
    while (p->next!=NULL){
        printf("%d",p->data);
        p=p->next;
    }
    printf("%d",p->data);
}//遍歷鏈表


void linkList_ini(LinkList &L){
    L=(LinkList)malloc(sizeof(Lnode));
    L->next=NULL;
    L->data=0;
}//initiate a linklist
void linkList_add(LinkList &L, elemtype e){
    LinkList p=L;
    LinkList s=(LinkList)malloc(sizeof(Lnode));
    s->data=e;
    s->next= NULL;
    while(p->next!=NULL){
        p=p->next;
}
    p->next=s;
}//add a elem in the tail
void linkList_insert(LinkList &L,int i,elemtype e){
    LinkList p=L;
    LinkList s=(LinkList)malloc(sizeof(Lnode));
    s->data=e;
    for(int j=0;j<i-1;j++){
        p=p->next;
    }//指針p指向第i-1個元素
    s->next=p->next;
    p->next=s;
}//i是插入位置,e爲待插入元素

int main() {
    LinkList L;
    linkList_ini(L);
    linkList_add(L,1);
    linkList_add(L,2);
    linkList_insert(L,1,2);
    linkList_traverse(L);
}

Java

class Lnode{
    Lnode next;
    int data;
    public Lnode(int e){
        this.data=e;
        this.next=null;
    }
    public static void add(Lnode L,int data){
        Lnode p=L;
        while(p.next!=null){
            p=p.next;
        }
        p.next=new Lnode(data);//尾插法
    }
    public static void insert(Lnode L,int i,int data){
        Lnode p=L;
        Lnode s=new Lnode(data);//創建新節點
        for(int j=0;j<i-1;j++){
            p=p.next;
        }//指向第i-1個位置
        s.next=p.next;
        p.next=s;
    }
    public static void traverse(Lnode L){
        Lnode p=L;
        while (p.next!=null){
            System.out.println(p.data);
            p=p.next;
        }
        System.out.println(p.data);
    }//遍歷鏈表,輸出元素
}

public class LinkList {

    public static void main(String[] args) {
        Lnode L=new Lnode(0);
        Lnode.add(L,20);
        Lnode.insert(L,1,30);
        Lnode.traverse(L);

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章