数据结构

参考:https://www.hello-algo.com/chapter_hello_algo/

初始算法

算法:指对特定问题求解步骤的一种描述。根据基本逻辑解决问题,我们身边爱的算法非常多,以下是几个例子,便于理解算法。 例一:查字典

顺序表

顺序表的定义如下:

顺序表定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 10 //定义最大长度
typedef int ElementType;

typedef struct {
ElementType data[MAX_SIZE]; //用静态数组表示顺序表
int length; //定义数组长度
} SqList; //结构体名字

//初始化顺序表
SqList * InitList(){
//你的指针是什么类型的,你申请的malloc空间就要返回什么类型的
//malloc返回的是void*
//该函数返回一个指针指向已分配大小的内存如果请求失败则返回null
SqList *list = (SqList *)malloc(sizeof(SqList));
//此处返回结构体类型指针
list->length = 0;
return list;
}

//打印顺序表
void print_list(SqList *list){
for(int i=0;i<list->length;i++){
printf("%d ",list->data[i]);
}
printf("\n");
}

//插入顺序表
int add(SqList *list,int index,ElementType value){ //在index插入元素value
if(index < 0 || index >= MAX_SIZE + 1){
printf("插入的位置不符合顺序表,不能插入\n");
return 0;
}
if(list->length>=MAX_SIZE){
printf("顺序表当前存储的元素已达到最大值,不能插入\n");
return 0;
}
for (int i = list->length; i >= index; i--){
list->data[i] = list->data[i-1];
}
list->data[index] = value;
list->length++;
return 1;
}

//删除顺序表某个元素
int del(SqList*list,int index){ //删除index位置的元素value
if(index < 0 || index > list->length){
return 0;
}
if(list->length<=0){
printf("顺序表为空,不能删除");
return 0;
}
for(int i = index; i <= list->length; i++){
list->data[i] = list->data[i+1];
}
list->length--;
return 1;
}

//按值查找
int find(SqList *list,ElementType value){
for(int i = 0; i <= list->length; i++){
if(list->data[i] == value){
printf("你要查找的元素 %d 在顺序表第 %d 个位置\n",value,i+1);
return i+1;}
}
printf("未查找到该元素\n");
return 0;
}

int main(){
SqList *list1 = InitList();
//printf("%d",list1->length);
for(int i=0;i<MAX_SIZE-4;i++){
list1->data[i] = (i+1)*10;
list1->length +=1;
}
//printf("%d\n",list1->length);
print_list(list1);
add(list1,0,2);
print_list(list1);
del(list1,2);
print_list(list1);
find(list1,10);
return 0;
}
查看代码运行结果:

太小了,请点击这个链接查看🔗,如果你想编辑我的代码,请注册图码,并点击这个链接🔗编辑

单链表

单链表定义如下:

作者

Vc0n1ln

发布于

2024-08-17

更新于

2024-10-31

许可协议

CC BY 4.0

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×