数据结构

1. 顺序表

1.插入 结构体为 SqList

 bool Insert(SqList * &L ,int i ,ElemType e){ //SqList * &L  表示l可以直接操纵结构体的元素.
    if(i <0 || i>L->length){
        return false;
    }
    for(int n=L->length;n>i;n--){
        L->data[n]=L->data[n-1];
    }
        L->data[n]=e;
        L->length++;
        return true;
}

2.删除数据元素

ElemType Delete(SqList * &L ,int i){
        if(i > L->length|| i<0 ){
            return null;
        }
        ElemType e =L->data[i];
        if(int n =i; n<L->length-1;n++){
                L->data[n}=L->data[n+1];
        }
        L->length--;
        return e;

}

2. 链表

1.单链表结构
typedef struct LNode{
    ElemType data;
    struct LNode * next;
} LinkList
2.双链表结构

typedef struct LNode{
    ElemType data;
    struct LNode * next;
    struct LNode * prior;
} DLinkList

3 .1单链表头插建表法,将新节点插入表头

void createListHead(LinkList *& L ,ElemType[] a, int n){
        LinkList *s;
        int i;
        L=(LinkList *)malloc(sizeof(LinkList ));
        for(i =0;i<n;a++){
            s=(LinkList *)malloc(sizeof(LinkList));
            s->data=a[i];
            s->ntext=L->next;
            L->next=s;  
        }
}

3.2 单链表尾插法,将新节点插入表尾

void createListTail(LinkList *&L,ElemType[] a ,int n){
    int i;
    LinkList * s ,*r;
    L=(LinkList *)malloc(sizeof(LinkList ));
    r=L;
    for(i=0;i<n;i++){
        s=(LinkList *)malloc(sizeof(LinkList ));
        s->data=a[i];
        r->next=s;
        r=s;
    }
        r->next=NULL;
}

4.插入元素操作,把s插入到P后边

s=(LinkList *)malloc(sizeof(LinkList));
s->data=5;
s->next=p->next;
p->next=s;

5.删除p元素后边的元素

LinkList * q =p->next;
if(q == null) return null;
e=q->data;
p->next =q-next;
free(q);
return e;
  1. 双链表创建,头插法(新元素插入到头结点后第一个节点位置)
void createListHead( DLinkList *&L,ElemType[] a,int n){
        L=(DLinkList *)malloc(sizeof(DLinkList));
        DLinkList *s;
        int i;
        L->prior=NULL;
        for(i =0;i <n;i++){
            s=(DLinkList *)malloc(sizeof(DLinkList));
            s->data=a[i];
            s->next=L->next;
            if(L->next != NULL){
                s=L->next->prior;
            }
            L->next=s;
            s->prior=L;
        }

}

7.双链表创建,尾插法新元素插入成为尾节点)

void createListTail(DLinkList *& L,ElemType[] a,int n){
    L=(DLinkList *)malloc(sizeof(DLinkList));
    int i ;
    DLinkList * s;
    DLinkList * r=L;
    for(i =0;i<n;i++){
        s=(DLinkList *)malloc(sizeof(DLinkList));
        s->data=a[i];
        r->next=s;
        s->prior=r;
        r=s;
    }
    r->next= NULL;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容