大二学习数据结构和算法啦,因为之前用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;
}
