-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStaLinkList.h
147 lines (126 loc) · 4.53 KB
/
StaLinkList.h
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//
// Created by Maylon on 2022/7/21.
//
#include "LinkList.h"
#ifndef DATA_STRUCTURES_STALINKLIST_H
#define DATA_STRUCTURES_STALINKLIST_H
#define MaxSize 10
typedef struct {
ElemType data;
int next;
} StaLinkList[MaxSize];
/* Create */
/*!
* Initialize or reset the static linked list (with a head node)
* @param L : pointer to the static linked list array pointer
* @return status (true, false)
*/
Status InitStaList(StaLinkList **L);
/* Destroy */
/*!
* Destroy the static linked list (with a head node)
* @param L : pointer to the static linked list array pointer
* @return status (true, false)
*/
Status DestroyStaList(StaLinkList **L);
/* Insert */
/*!
* Insert a node from head of the static linked list (with a head node)
* @param L : pointer to the static linked list array
* @param e : element to be inserted
* @return status (true, false, list_full)
*/
Status StaList_Head_Insert(StaLinkList *L, ElemType e);
/*!
* Insert a node from tail of the static linked list (with a head node)
* @param L : pointer to the static linked list array
* @param e : element to be insert
* @return status (true, false, list_full)
*/
Status StaList_Tail_Insert(StaLinkList *L, ElemType e);
/*!
* Insert a node before a specific node of the static linked list (with a head node) by order
* @param L : pointer to the static linked list array
* @param i : the order of a specific node, legitimate range: [1, n + 1]
* @param e : element to be insert
* @return status (true, false, input_error, list_full)
*/
Status StaList_Insert_By_Order(StaLinkList *L, int i, ElemType e);
/* Delete */
/*!
* Delete a node of the static linked list (with a head node) by value
* @param L : pointer to the static linked list array
* @param e : the data of the node to be deleted
* @return status (true, false)
*/
Status StaList_Delete_By_Value(StaLinkList *L, ElemType e);
/*!
* Delete a node of the static linked list (with a head node) by order
* @param L : pointer to the static linked list array
* @param i : the order of a specific node, legitimate range: [1, n]
* @param e : the data of the node to be deleted
* @return status (true, false, input_error)
*/
Status StaList_Delete_By_Order(StaLinkList *L, int i, ElemType *e);
/* Retrieve */
/*!
* Retrieve an unused position to be inserted
* @param L : pointer to the static linked list array
* @return position of the result node if successfully retrieved else -1
*/
int StaList_Retrieve_Position(StaLinkList *L);
/*!
* Retrieve a node of the static linked list (with a head node) by value
* @param L : pointer to the static linked list array
* @param e : the data of the node to be retrieved
* @return position of the result node if successfully retrieved else -1
*/
int StaList_Retrieve_By_Value(StaLinkList *L, ElemType e);
/*!
* Retrieve a node of the static linked list (with a head node) by order
* @param L : pointer to the static linked list array
* @param i : the order of a specific node, legitimate range: [1, n]
* @return position of the result node if successfully retrieved else -1
*/
int StaList_Retrieve_By_Order(StaLinkList *L, int i);
/* Update */
/*!
* Update a node of the static linked list (with a head node) by value
* @param L : pointer to the static linked list array
* @param old : the old data of the node to be updated
* @param new : the new data of the node to be updated
* @return status (true, false)
*/
Status StaList_Update_By_Value(StaLinkList *L, ElemType old, ElemType new);
/*!
* Update a node of the static linked list (with a head node) by order
* @param L : pointer to the static linked list array
* @param i : the order of a specific node, legitimate range: [1, n]
* @param e : the data of the node to be updated
* @return status (true, false, input_error)
*/
Status StaList_Update_By_Order(StaLinkList *L, int i, ElemType e);
/* Reverse */
/*!
* Reverse the static linked list (with a head node)
* @param L : pointer to the static linked list array
* @return status (true, false)
*/
Status StaList_Reverse(StaLinkList *L);
/* Traverse */
/*!
* Traverse the static linked list (with a head node)
* @param L : pointer to the static linked list array
* @param visit : function pointer to the function that prints the data of a node
* @return status (true, false)
*/
Status StaList_Traverse(StaLinkList *L, void(*visit)(ElemType e));
/*!
* The static linked list (with a head node) menu
*/
void stalinklist_menu(void);
/*!
* The static linked list (with a head node) menu details
*/
void stalinklist_menu_show_details(void);
#endif //DATA_STRUCTURES_STALINKLIST_H