0


2.22 作业

顺序表

运行结果

fun.c

#include "fun.h"
seq_p create_seq_list()
{
    seq_p L = (seq_p)malloc(sizeof(seq_list));
    if(L==NULL)
    {
        printf("空间申请失败\n");
        return NULL;
    }
    L->len = 0;  
    bzero(L,sizeof(L->data)); 
    return L;
}
int seq_empty(seq_p L)
{
    if(L==NULL)
    {
        return -1; 
    }
    return L->len==0?1:0;
}

int seq_full(seq_p L)
{
    if(L==NULL)
    {
        return -1;  
    }
    return L->len==MAX?1:0;
}
void insert_head(seq_p L,int data)
{
    if(L==NULL)
    {
        printf("入参为空,请检查\n");
        return;
    }
    if(seq_full(L))
    {
        printf("表已满,不能插入\n");
        return;
    }
    for(int i=L->len-1;i>=0;i--)
    {
        L->data[i+1] = L->data[i];
    }

    L->data[0]=data;
    L->len++;  
}
void insert_tail(seq_p L,int value)
{
    if(L==NULL)
    {
        printf("入参为空,请检查\n");
        return;
    }
    if(seq_full(L))
    {
        printf("表已满,不能插入\n");
        return;
    }
    L->data[L->len]=value;
    L->len++;
}

void out_put(seq_p L)
{
    for(int i=0;i<L->len;i++)
    {
        printf("%d\n",L->data[i]);
    }
}

void insert_pos(seq_p L,int value,int pos)
{    
    if(L==NULL)
    {
        printf("入参为空,请检查\n");
        return;
    }
    if(seq_full(L))
    {
        printf("表已满,不能插入\n");
        return;
    }
    if(pos>L->len||pos<0)
    {
        printf("位置不合理");
        return;
    }
    for(int i=L->len-1;i>=pos;i--)
    {
        L->data[i+1]=L->data[i];
    }
    L->data[pos]=value;
    L->len++;
}

void del_pos(seq_p L,int pos)
{
    if(L==NULL)
    {
        printf("入参为空,请检查\n");
        return;
    }    
    if(seq_empty(L))
    {
        printf("表为空,无需删除\n");
        return;
    }
    for(int i=pos;i<L->len-1;i++)
    {
        L->data[i]=L->data[i+1];
    }
    L->len--;
}

void del(seq_p L)
{
    if(L==NULL){return;}
    if(seq_empty(L)){return;}
    if(L->len==1){printf("只有一个元素\n");return;}
    for(int i=0;i<L->len;i++)
    {
        for(int j=i+1;j<L->len;j++)
        {
            if(L->data[i]==L->data[j])
            {
                del_pos(L,j);
                j--;
            } 
        }
    }
}

fun.h

#ifndef __SEQ_LIST_H__
#define __SEQ_LIST_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 7
typedef struct seq_list
{
    int data[MAX];
    int len;
}
seq_list,*seq_p;
seq_p create_seq_list();
int seq_empty(seq_p L);//判满
int seq_full(seq_p L);//判空
void insert_head(seq_p L,int data);//头插
void insert_tail(seq_p L,int value);//尾插
void out_put(seq_p L);//输出
void insert_pos(seq_p L,int value,int pos);//按下标插入
void del_pos(seq_p L,int pos);//按下标删除
void del(seq_p L);//去重
#endif

main.c

#include "fun.h"
int main()
{
    seq_p L = create_seq_list();
    insert_head(L,10);
    insert_head(L,20);
    insert_tail(L,20);
    insert_tail(L,30);
    out_put(L);
    putchar(10);
    insert_pos(L,50,2);
    out_put(L);
    putchar(10);
    del_pos(L,2);
    out_put(L);
    putchar(10);
    del(L);
    out_put(L);
    return 0;
}

链表

//尾插
void insert_tail(link_p H,link_p T,datatype data)
{
    if(T==NULL)
    {
        printf("入参为空,请检查\n");
        return;
    }
    link_p new = create_node(data);
    T->next=new;
    H->len++
}
//输出
void out_put(link_p H)
{
    for(int i=0;i<H->len;i++)
    {
        printf("%d\n",(H->next)->data);
        H->next=(H->next)->next;
    }
}

标签: java 开发语言

本文转载自: https://blog.csdn.net/weixin_65799837/article/details/136241749
版权归原作者 寒蝉641 所有, 如有侵权,请联系我们删除。

“2.22 作业”的评论:

还没有评论