数据结构------顺序表(C语言版)

请各位童鞋们睁大看好了,只教一遍哦~~!!!

1.创一个结构体,用于存数据元素

#include <stdio.h>
#include <stdlib.h>
#define Maxsize 10
typedef struct {
    int* data;
    int length;
} list;

2.创建顺序表

void Createlist(list*L)
{
    L->data = (int*)malloc(Maxsize*sizeof(int));
    L->length = 0;
    if (L->data == NULL) {
        printf("error:内存分配失败!");
        exit(0);
    }
}

3.初始化顺序表

//初始化顺序表
void Initlist(list* L)
{
    for (int i = 0;i < 10;i++) {
        L->data[i] = i;
        L->length++;
    }
}

4.顺序表插入

void Insertlist(list* L, int i, int e)
{
    if (i<1 || i>L->length) {
        printf("erro!\n");
        exit(0);
    }
    else {
        for (int j = L->length;j >= i - 1;j--) {
            L->data[j + 1] = L->data[j];
        }
        L->data[i - 1] = e;
        L->length++;
    }
}

5.顺序表删除

void deletelist(list* L, int i)
{
    if (i<1 || i>L->length) {
        printf("erro!\n");
        exit(0);
    }
    else {
        for (int j = i;j <= L->length;j++) {
            L->data[j - 1] = L->data[j];
        }
        L->length--;
    }
}

6.顺序表查找

void Locate(list*L,int e) 
{
    for (int i = 0;i <= L->length; i++) {
        if (L->data[i] == e) {
            printf("元素%d存在\n", i);
            break;
        }   
    }
}

7.打印顺序表

void printlist(list*L)
{
    for (int i = 0;i < L->length;i++) {
        printf("%-4d\n", L->data[i]);
    }
}

8.主函数切口

int main() {
    list L;
    Createlist(&L);
    Initlist(&L);
    printf("*********************数字插入前*********************\n");
    Insertlist(&L, 5, 666);
    printlist(&L);
    printf("*********************数字删除后*********************\n");
    deletelist(&L, 2);
    printlist(&L);
    printf("*********************数字查找中*********************\n");
    Locate(&L, 9);
    free(L.data);
    return 0;
}

9.运行结果

10.源程序

#include <stdio.h>
#include <stdlib.h>
#define Maxsize 10
typedef struct {
    int* data;
    int length;
} list;
//创建顺序表
void Createlist(list*L)
{
    L->data = (int*)malloc(Maxsize*sizeof(int));
    L->length = 0;
    if (L->data == NULL) {
        printf("error:内存分配失败!");
        exit(0);
    }
}
//初始化顺序表
void Initlist(list* L)
{
    for (int i = 0;i < 10;i++) {
        L->data[i] = i;
        L->length++;
    }
}
//顺序表插入
void Insertlist(list* L, int i, int e)
{
    if (i<1 || i>L->length) {
        printf("erro!\n");
        exit(0);
    }
    else {
        for (int j = L->length;j >= i - 1;j--) {
            L->data[j + 1] = L->data[j];
        }
        L->data[i - 1] = e;
        L->length++;
    }
}
//顺序表删除
void deletelist(list* L, int i)
{
    if (i<1 || i>L->length) {
        printf("erro!\n");
        exit(0);
    }
    else {
        for (int j = i;j <= L->length;j++) {
            L->data[j - 1] = L->data[j];
        }
        L->length--;
    }
}
//顺序表查找
void Locate(list*L,int e) 
{
    for (int i = 0;i <= L->length; i++) {
        if (L->data[i] == e) {
            printf("元素%d存在\n", i);
            break;
        }   
    }
}
//打印顺序表
void printlist(list*L)
{
    for (int i = 0;i < L->length;i++) {
        printf("%-4d\n", L->data[i]);
    }
}
//主函数切口
int main() {
    list L;
    Createlist(&L);
    Initlist(&L);
    printf("*********************数字插入前*********************\n");
    Insertlist(&L, 5, 666);
    printlist(&L);
    printf("*********************数字删除后*********************\n");
    deletelist(&L, 2);
    printlist(&L);
    printf("*********************数字查找中*********************\n");
    Locate(&L, 9);
    free(L.data);
    return 0;
}

好了,本节课到这里,下课!!!

给为童鞋们学废了吗???

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值