C语言实现顺序表

Posted hardhp74520

tags:

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

大二学习数据结构和算法啦,因为之前用Java语言实现过,所以理解起来还是比较轻松,就是理解数组与结构体的运用。废话不多说,上代码!

结构体

typedef struct 
    int *data;
    int Maxsz;
    int len;
    
 SeqList;

初始化

void InitList (SeqList *L, int maxsz) //初始化 
    L->Maxsz = maxsz;
    L->data = (int*)malloc(sizeof(int)*maxsz);//动态分配存储空间,相当于 new
    L->len = 0;

增删改查插

int AddList(SeqList *L, int x)  //增加
    if(L->len >= L->Maxsz) 
        return 0;
    
    L->data[L->len] = x;
    L->len++;
    return 1;


int DelList(SeqList *L, int index) //删除
    if(index >= L->Maxsz) 
        return 0;
    
    int  i=0;
    for(i = index; i < L->Maxsz; i++) 
        L->data[i] = L->data[i+1];
    
    L->len--;
    return 1;


int Update(SeqList *L, int oldda, int newda) //修改
    int i,flag = 0;
    for(i = 0; i < L->Maxsz; i++) 
        if(L->data[i] == oldda) 
            flag = 1;
            break;
        
    
    if(flag == 1) 
        L->data[i] = newda;
        return 1;
     else 
        return 0;
    


int Insert(SeqList *L, int index, int data)  //插入1
    int i;
    int len = L->len - 1;
    if(len+1 > L->Maxsz) 
        return 0;
    
    for(i = len; i >= index; i--) 
        L->data[i+1] = L->data[i];
    
    L->data[index] = data;
    L->len++;
    return 1;


int InsertList(SeqList *L, int index, int data) //插入2
    int i;
    if(index < 0 || index > L-> len - 1) 
        return 0;
    
    if(L->len == L->Maxsz) 
        return 0;
    
    for(i=L->len-1; i>=index; i--)
        L->data[i+1] = L->data[i];
    
    L->data[index] = data;
    L->len++;
    return 1;

还有一些小方法,销毁,取长,清空

void DestoryList(SeqList *L) //销毁顺序表 
    free(L->data);


int ListLength(SeqList *L) //获取长度 
    return L->len;


void ClearList(SeqList *L) //清空顺序表 
    L->len=0;

全部代码

技术图片
#include<stdio.h>

typedef struct 
    int *data;
    int Maxsz;
    int len;
    
 SeqList;

void DestoryList(SeqList *L) //销毁顺序表 
    free(L->data);


int ListLength(SeqList *L) //获取长度 
    return L->len;


void ClearList(SeqList *L) //清空顺序表 
    L->len=0;


void InitList (SeqList *L, int maxsz) //初始化 
    L->Maxsz = maxsz;
    L->data = (int*)malloc(sizeof(int)*maxsz);//动态分配存储空间,相当于 new
    L->len = 0;


int AddList(SeqList *L, int x)  //增加
    if(L->len >= L->Maxsz) 
        return 0;
    
    L->data[L->len] = x;
    L->len++;
    return 1;


int DelList(SeqList *L, int index) //删除
    if(index >= L->Maxsz) 
        return 0;
    
    int  i=0;
    for(i = index; i < L->Maxsz; i++) 
        L->data[i] = L->data[i+1];
    
    L->len--;
    return 1;


int Update(SeqList *L, int oldda, int newda) //修改
    int i,flag = 0;
    for(i = 0; i < L->Maxsz; i++) 
        if(L->data[i] == oldda) 
            flag = 1;
            break;
        
    
    if(flag == 1) 
        L->data[i] = newda;
        return 1;
     else 
        return 0;
    


int Insert(SeqList *L, int index, int data)  //插入1
    int i;
    int len = L->len - 1;
    if(len+1 > L->Maxsz) 
        return 0;
    
    for(i = len; i >= index; i--) 
        L->data[i+1] = L->data[i];
    
    L->data[index] = data;
    L->len++;
    return 1;


int InsertList(SeqList *L, int index, int data) //插入2
    int i;
    if(index < 0 || index > L-> len - 1) 
        return 0;
    
    if(L->len == L->Maxsz) 
        return 0;
    
    for(i=L->len-1; i>=index; i--)
        L->data[i+1] = L->data[i];
    
    L->data[index] = data;
    L->len++;
    return 1;


void display(SeqList *L) //显示 
    int i;
    for(i=0; i < L->len; i++) 
        printf("%d\n", L->data[i]);
    


int main() 
    SeqList sl;

    InitList(&sl, 6);

    AddList(&sl,0);
    AddList(&sl,1);
    AddList(&sl,2);
    AddList(&sl,3);
    AddList(&sl,5);

    Insert(&sl,4,4);
    //AddList(&sl,5);
    //Update(&sl, 5, 6);
    //DelList(&sl,4);

    display(&sl);
    return 0;
View Code

 

以上是关于C语言实现顺序表的主要内容,如果未能解决你的问题,请参考以下文章

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

数据结构C语言实现动态顺序表

线性表的基本操作c语言实现

数据结构c语言版 使用线性表的顺序储存结构定义(静态)实现线性表的初

顺序表详解及其c语言代码实现

使用C语言编写程序,实现顺序表的基本运算——插入和删除。