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;
以上是关于C语言实现顺序表的主要内容,如果未能解决你的问题,请参考以下文章