Parcourir la source

init version

master
huangyulong il y a 4 ans
Parent
révision
721d60fc10
16 fichiers modifiés avec 1183 ajouts et 0 suppressions
  1. BIN
      looplist/loop_list
  2. 239
    0
      looplist/loop_list.c
  3. 7
    0
      looplist/loop_list.h
  4. BIN
      looplist/loop_list.o
  5. 7
    0
      looplist/makefile
  6. BIN
      slist/Debug/se.exe
  7. BIN
      slist/Debug/slist.o
  8. 7
    0
      slist/makefile
  9. 291
    0
      slist/se.vpj
  10. 6
    0
      slist/se.vpw
  11. 209
    0
      slist/se.vpwhist
  12. BIN
      slist/se.vtg
  13. BIN
      slist/slist
  14. 393
    0
      slist/slist.c
  15. 24
    0
      slist/slist.h
  16. BIN
      slist/slist.o

BIN
looplist/loop_list Voir le fichier


+ 239
- 0
looplist/loop_list.c Voir le fichier

@@ -0,0 +1,239 @@
1
+#include <stdio.h>
2
+#include <stdlib.h>
3
+#include "loop_list.h"
4
+
5
+#define PKT_ASSERT(x) {if(!x){printf("assert failed!\n");while(1);}}
6
+
7
+typedef int data_type;
8
+
9
+typedef struct list_node *list_node_t;
10
+struct list_node
11
+{
12
+    list_node_t next;
13
+    data_type data;
14
+};
15
+
16
+int pkt_get_loop_list_length(list_node_t l)
17
+{
18
+    int i = 0;
19
+    list_node_t p = l->next;
20
+    while (p != l)
21
+    {
22
+        printf("l[%d] = %d\n", i, p->data);
23
+        p = p->next;
24
+        i++;  
25
+    }
26
+    return i;
27
+}
28
+
29
+list_node_t pkt_creat_loop_list(void)
30
+{
31
+    list_node_t n;
32
+
33
+    n = (list_node_t)malloc(sizeof(struct list_node));
34
+    n->next = n;
35
+    return n;
36
+}
37
+
38
+int pkt_insert_loop_list_head(list_node_t l, data_type data)
39
+{
40
+    PKT_ASSERT(l);
41
+
42
+    list_node_t n = (list_node_t)malloc(sizeof(struct list_node));
43
+    if (!n)
44
+    {
45
+        printf("malloc failed!\n");
46
+        return -1;
47
+    }
48
+
49
+    n->data = data;
50
+    n->next = l->next;
51
+    l->next = n;
52
+
53
+    return 0;
54
+}
55
+
56
+int pkt_merge_loop_list(list_node_t des, list_node_t src)
57
+{
58
+    PKT_ASSERT(des);
59
+    PKT_ASSERT(src);
60
+    if (!des->next || !src->next)
61
+    {
62
+        printf("is a empty list!\n");
63
+        return -1;
64
+    }
65
+    list_node_t p = des;
66
+    list_node_t q = src;
67
+
68
+    while (p->next != des)
69
+    {
70
+        p = p->next;
71
+    }
72
+
73
+    while (q->next != src)
74
+    {
75
+        q = q->next;
76
+    }
77
+
78
+    q->next = p->next;
79
+    p->next = src->next;
80
+    free(src);
81
+    return 0;
82
+}
83
+
84
+
85
+
86
+
87
+typedef struct dlist_node *dlist_node_t;
88
+struct dlist_node
89
+{
90
+    dlist_node_t prev;
91
+    dlist_node_t next;
92
+    data_type data;
93
+};
94
+
95
+int pkt_get_loop_dlist_length(dlist_node_t l)
96
+{
97
+    int i = 0;
98
+    dlist_node_t p = l->next;
99
+    while (p != l)
100
+    {
101
+        printf("dl[%d] = %d\n", i, p->data);
102
+        p = p->next;
103
+        i++;
104
+    }
105
+
106
+    return i;
107
+}
108
+
109
+dlist_node_t pkt_creat_loop_dlist(void)
110
+{
111
+    dlist_node_t n;
112
+    n = (dlist_node_t)malloc(sizeof(struct dlist_node));
113
+    n->next = n->prev = n;
114
+    return n;
115
+}
116
+
117
+int pkt_insert_loop_dlist(dlist_node_t l, data_type data)
118
+{
119
+    PKT_ASSERT(l);
120
+
121
+    dlist_node_t n = (dlist_node_t)malloc(sizeof(struct dlist_node));
122
+    if (!n)
123
+    {
124
+        printf("malloc failed!\n");
125
+        return -1;
126
+    }
127
+    n->data = data;
128
+    dlist_node_t p = l;
129
+
130
+    n->next = p;
131
+    n->prev = p->prev;
132
+    p->prev->next = n;
133
+    p->prev = n;
134
+    return 0;
135
+}
136
+
137
+int pkt_remove_loop_dlist(dlist_node_t l, data_type data)
138
+{
139
+    PKT_ASSERT(l);
140
+    dlist_node_t p = l->next;
141
+
142
+    while (p->next != l && p->data != data)
143
+    {
144
+        p = p->next;
145
+    }
146
+
147
+    if (p->next == l)
148
+    {
149
+        printf("did not find the node\n");
150
+        return -1;
151
+    }
152
+
153
+    p->prev->next = p->next;
154
+    p->next->prev = p->prev;
155
+
156
+    free(p);
157
+    return 0;
158
+}
159
+
160
+dlist_node_t pkt_get_node_by_pos(dlist_node_t l, int pos)
161
+{
162
+    PKT_ASSERT(l);
163
+    if (pos < 0)
164
+    {
165
+        printf("the pos < 0\n");
166
+        return NULL;
167
+    }
168
+    dlist_node_t p = l->next;
169
+    int i = 0;
170
+
171
+    while (p != l && pos > i)
172
+    {
173
+        p = p->next;
174
+        i++;
175
+    }
176
+
177
+    if (p == l)
178
+    {
179
+        printf("the pos is too big\n");
180
+        return NULL;
181
+    }
182
+
183
+    return p;
184
+}
185
+
186
+int main(int argc, char **argv)
187
+{
188
+#if 0
189
+    list_node_t des = pkt_creat_loop_list();
190
+    list_node_t src = pkt_creat_loop_list();
191
+
192
+    pkt_insert_loop_list_head(des, 9899);
193
+    pkt_insert_loop_list_head(des, 1);
194
+    pkt_insert_loop_list_head(des, 8);
195
+    pkt_insert_loop_list_head(des, 9);
196
+
197
+    pkt_insert_loop_list_head(src, 99999);
198
+    pkt_insert_loop_list_head(src, 66666);
199
+
200
+    pkt_get_loop_list_length(des);
201
+    printf("======================================\n");
202
+    pkt_get_loop_list_length(src);
203
+
204
+    pkt_merge_loop_list(des, src);
205
+    printf("======================================\n");
206
+    pkt_get_loop_list_length(des);
207
+#elif 1
208
+    dlist_node_t dlist = pkt_creat_loop_dlist();
209
+    pkt_insert_loop_dlist(dlist, 10);
210
+    pkt_insert_loop_dlist(dlist, 89); 
211
+    pkt_insert_loop_dlist(dlist, 55);
212
+    pkt_insert_loop_dlist(dlist, 98);
213
+    pkt_insert_loop_dlist(dlist, 23);
214
+    pkt_insert_loop_dlist(dlist, 969);
215
+
216
+    pkt_get_loop_dlist_length(dlist);
217
+
218
+    printf("======================================\n");
219
+    pkt_remove_loop_dlist(dlist, 55);
220
+    pkt_get_loop_dlist_length(dlist);
221
+    printf("======================================\n");
222
+    pkt_remove_loop_dlist(dlist, 155);
223
+    pkt_get_loop_dlist_length(dlist);
224
+
225
+    int pos;
226
+    while (1)
227
+    {
228
+        scanf("%d", &pos);
229
+        dlist_node_t node;
230
+        if (node = pkt_get_node_by_pos(dlist, pos))
231
+        {
232
+            printf("l[%d].data = %d\n", pos, node->data);
233
+        } 
234
+    }
235
+#endif
236
+    return 0;
237
+}
238
+
239
+

+ 7
- 0
looplist/loop_list.h Voir le fichier

@@ -0,0 +1,7 @@
1
+#ifndef _LOOP_LIST_H_
2
+#define _LOOP_LIST_H_
3
+
4
+
5
+
6
+#endif
7
+

BIN
looplist/loop_list.o Voir le fichier


+ 7
- 0
looplist/makefile Voir le fichier

@@ -0,0 +1,7 @@
1
+CFLAGS = -Wall
2
+
3
+loop_list: loop_list.o
4
+
5
+.PHONY clean:
6
+clean:
7
+	rm loop_list.o loop_list

BIN
slist/Debug/se.exe Voir le fichier


BIN
slist/Debug/slist.o Voir le fichier


+ 7
- 0
slist/makefile Voir le fichier

@@ -0,0 +1,7 @@
1
+CFLAGS = -Wall
2
+
3
+slist : slist.o
4
+
5
+.PHONY: clean
6
+clean:
7
+	rm slist.o slist

+ 291
- 0
slist/se.vpj Voir le fichier

@@ -0,0 +1,291 @@
1
+<!DOCTYPE Project SYSTEM "http://www.slickedit.com/dtd/vse/10.0/vpj.dtd">
2
+<Project
3
+    Version="10.0"
4
+    VendorName="SlickEdit"
5
+    TemplateName="GNU C/C++"
6
+    WorkingDir="."
7
+    BuildSystem="automakefile"
8
+    BuildMakeFile="makefile">
9
+    <Config
10
+        Name="Debug"
11
+        Type="gnuc"
12
+        DebugCallbackName="gdb"
13
+        Version="1"
14
+        OutputFile="%bdse.exe"
15
+        CompilerConfigName="Latest Version">
16
+        <Menu>
17
+            <Target
18
+                Name="Compile"
19
+                MenuCaption="&amp;Compile"
20
+                Dialog="_gnuc_options_form Compile"
21
+                CaptureOutputWith="ProcessBuffer"
22
+                Deletable="0"
23
+                OutputExts="*.o"
24
+                SaveOption="SaveCurrent"
25
+                RunFromDir="%rw">
26
+                <Exec CmdLine='gcc -c %xup  %defd -g -o "%bd%n%oe" %i "%f"'/>
27
+            </Target>
28
+            <Target
29
+                Name="Link"
30
+                MenuCaption="&amp;Link"
31
+                ShowOnMenu="Never"
32
+                Dialog="_gnuc_options_form Link"
33
+                CaptureOutputWith="ProcessBuffer"
34
+                Deletable="0"
35
+                SaveOption="SaveCurrent"
36
+                RunFromDir="%rw">
37
+                <Exec CmdLine='gcc %xup -g -o "%o" %f %libs'/>
38
+            </Target>
39
+            <Target
40
+                Name="Build"
41
+                MenuCaption="&amp;Build"
42
+                CaptureOutputWith="ProcessBuffer"
43
+                Deletable="0"
44
+                SaveOption="SaveWorkspaceFiles"
45
+                RunFromDir="%rw">
46
+                <Exec CmdLine='make -f "makefile" CFG=%b'/>
47
+            </Target>
48
+            <Target
49
+                Name="Rebuild"
50
+                MenuCaption="&amp;Rebuild"
51
+                CaptureOutputWith="ProcessBuffer"
52
+                Deletable="0"
53
+                SaveOption="SaveWorkspaceFiles"
54
+                RunFromDir="%rw">
55
+                <Exec CmdLine='make -f "makefile" rebuild CFG=%b'/>
56
+            </Target>
57
+            <Target
58
+                Name="Debug"
59
+                MenuCaption="&amp;Debug"
60
+                Dialog="_gnuc_options_form Run/Debug"
61
+                BuildFirst="1"
62
+                CaptureOutputWith="ProcessBuffer"
63
+                Deletable="0"
64
+                SaveOption="SaveNone"
65
+                RunFromDir="%rw">
66
+                <Exec CmdLine='vsdebugio -prog "%o"'/>
67
+            </Target>
68
+            <Target
69
+                Name="Execute"
70
+                MenuCaption="E&amp;xecute"
71
+                Dialog="_gnuc_options_form Run/Debug"
72
+                BuildFirst="1"
73
+                CaptureOutputWith="ProcessBuffer"
74
+                Deletable="0"
75
+                SaveOption="SaveWorkspaceFiles"
76
+                RunFromDir="%rw">
77
+                <Exec CmdLine='"%o"'/>
78
+            </Target>
79
+            <Target
80
+                Name="dash"
81
+                MenuCaption="-"
82
+                Deletable="0">
83
+                <Exec/>
84
+            </Target>
85
+            <Target
86
+                Name="GNU C Options"
87
+                MenuCaption="GNU C &amp;Options..."
88
+                ShowOnMenu="HideIfNoCmdLine"
89
+                Deletable="0"
90
+                SaveOption="SaveNone">
91
+                <Exec
92
+                    CmdLine="gnucoptions"
93
+                    Type="Slick-C"/>
94
+            </Target>
95
+        </Menu>
96
+        <Rules Name="Compile">
97
+            <Rule
98
+                InputExts="*.ada"
99
+                OutputExts="*.o"
100
+                LinkObject="1">
101
+                <Exec CmdLine='gnat -g -c -o "%bd%n.o" "%f"'/>
102
+            </Rule>
103
+            <Rule
104
+                InputExts="*.adb"
105
+                OutputExts="*.o"
106
+                LinkObject="1">
107
+                <Exec CmdLine='gnat -g -c -o "%bd%n.o" "%f"'/>
108
+            </Rule>
109
+            <Rule
110
+                InputExts="*.f"
111
+                OutputExts="*.o"
112
+                LinkObject="1">
113
+                <Exec CmdLine='gfortran -c -g -o "%bd%n.o" "%f"'/>
114
+            </Rule>
115
+            <Rule
116
+                InputExts="*.f90"
117
+                OutputExts="*.o"
118
+                LinkObject="1">
119
+                <Exec CmdLine='gfortran -c -g -o "%bd%n.o" "%f"'/>
120
+            </Rule>
121
+            <Rule
122
+                InputExts="*.d"
123
+                OutputExts="*.o"
124
+                LinkObject="1">
125
+                <Exec CmdLine='gdc -c -g -o "%bd%n.o" "%f"'/>
126
+            </Rule>
127
+        </Rules>
128
+        <List Name="GNUC Options">
129
+            <Item
130
+                Name="LinkerOutputType"
131
+                Value="Executable"/>
132
+        </List>
133
+    </Config>
134
+    <Config
135
+        Name="Release"
136
+        Type="gnuc"
137
+        DebugCallbackName="gdb"
138
+        Version="1"
139
+        OutputFile="%bdse.exe"
140
+        CompilerConfigName="Latest Version">
141
+        <Menu>
142
+            <Target
143
+                Name="Compile"
144
+                MenuCaption="&amp;Compile"
145
+                Dialog="_gnuc_options_form Compile"
146
+                CaptureOutputWith="ProcessBuffer"
147
+                Deletable="0"
148
+                OutputExts="*.o"
149
+                SaveOption="SaveCurrent"
150
+                RunFromDir="%rw">
151
+                <Exec CmdLine='gcc -c %xup %defd -o "%bd%n%oe" %i "%f"'/>
152
+            </Target>
153
+            <Target
154
+                Name="Link"
155
+                MenuCaption="&amp;Link"
156
+                ShowOnMenu="Never"
157
+                Dialog="_gnuc_options_form Link"
158
+                CaptureOutputWith="ProcessBuffer"
159
+                Deletable="0"
160
+                SaveOption="SaveCurrent"
161
+                RunFromDir="%rw">
162
+                <Exec CmdLine='gcc %xup -o "%o" %f %libs'/>
163
+            </Target>
164
+            <Target
165
+                Name="Build"
166
+                MenuCaption="&amp;Build"
167
+                CaptureOutputWith="ProcessBuffer"
168
+                Deletable="0"
169
+                SaveOption="SaveWorkspaceFiles"
170
+                RunFromDir="%rw">
171
+                <Exec CmdLine='make -f "makefile" CFG=%b'/>
172
+            </Target>
173
+            <Target
174
+                Name="Rebuild"
175
+                MenuCaption="&amp;Rebuild"
176
+                CaptureOutputWith="ProcessBuffer"
177
+                Deletable="0"
178
+                SaveOption="SaveWorkspaceFiles"
179
+                RunFromDir="%rw">
180
+                <Exec CmdLine='make -f "makefile" rebuild CFG=%b'/>
181
+            </Target>
182
+            <Target
183
+                Name="Debug"
184
+                MenuCaption="&amp;Debug"
185
+                Dialog="_gnuc_options_form Run/Debug"
186
+                BuildFirst="1"
187
+                CaptureOutputWith="ProcessBuffer"
188
+                Deletable="0"
189
+                SaveOption="SaveNone"
190
+                RunFromDir="%rw">
191
+                <Exec CmdLine='vsdebugio -prog "%o"'/>
192
+            </Target>
193
+            <Target
194
+                Name="Execute"
195
+                MenuCaption="E&amp;xecute"
196
+                Dialog="_gnuc_options_form Run/Debug"
197
+                BuildFirst="1"
198
+                CaptureOutputWith="ProcessBuffer"
199
+                Deletable="0"
200
+                SaveOption="SaveWorkspaceFiles"
201
+                RunFromDir="%rw">
202
+                <Exec CmdLine='"%o"'/>
203
+            </Target>
204
+            <Target
205
+                Name="dash"
206
+                MenuCaption="-"
207
+                Deletable="0">
208
+                <Exec/>
209
+            </Target>
210
+            <Target
211
+                Name="GNU C Options"
212
+                MenuCaption="GNU C &amp;Options..."
213
+                ShowOnMenu="HideIfNoCmdLine"
214
+                Deletable="0"
215
+                SaveOption="SaveNone">
216
+                <Exec
217
+                    CmdLine="gnucoptions"
218
+                    Type="Slick-C"/>
219
+            </Target>
220
+        </Menu>
221
+        <Rules Name="Compile">
222
+            <Rule
223
+                InputExts="*.ada"
224
+                OutputExts="*.o"
225
+                LinkObject="1">
226
+                <Exec CmdLine='gnat -O -c -o "%bd%n.o" "%f"'/>
227
+            </Rule>
228
+            <Rule
229
+                InputExts="*.adb"
230
+                OutputExts="*.o"
231
+                LinkObject="1">
232
+                <Exec CmdLine='gnat -O -c -o "%bd%n.o" "%f"'/>
233
+            </Rule>
234
+            <Rule
235
+                InputExts="*.f"
236
+                OutputExts="*.o"
237
+                LinkObject="1">
238
+                <Exec CmdLine='gfortran -O -g -o "%bd%n.o" "%f"'/>
239
+            </Rule>
240
+            <Rule
241
+                InputExts="*.f90"
242
+                OutputExts="*.o"
243
+                LinkObject="1">
244
+                <Exec CmdLine='gfortran -O -g -o "%bd%n.o" "%f"'/>
245
+            </Rule>
246
+            <Rule
247
+                InputExts="*.d"
248
+                OutputExts="*.o"
249
+                LinkObject="1">
250
+                <Exec CmdLine='gdc -c -g -o "%bd%n.o" "%f"'/>
251
+            </Rule>
252
+        </Rules>
253
+        <List Name="GNUC Options">
254
+            <Item
255
+                Name="LinkerOutputType"
256
+                Value="Executable"/>
257
+        </List>
258
+    </Config>
259
+    <Files>
260
+        <Folder
261
+            Name="Source Files"
262
+            Filters="*.c;*.C;*.cc;*.cpp;*.cp;*.cxx;*.c++;*.prg;*.pas;*.dpr;*.asm;*.s;*.bas;*.java;*.cs;*.sc;*.scala;*.e;*.cob;*.html;*.rc;*.tcl;*.py;*.pl;*.d;*.m;*.mm;*.go;*.groovy;*.gsh"
263
+            GUID="{37CEAD61-A716-4AEA-BC0A-91918561B6EA}">
264
+            <F N="slist.c"/>
265
+        </Folder>
266
+        <Folder
267
+            Name="Header Files"
268
+            Filters="*.h;*.H;*.hh;*.hpp;*.hxx;*.h++;*.inc;*.sh;*.cpy;*.if"
269
+            GUID="{603D1B56-852E-42D2-BC8C-373815D8AE40}">
270
+            <F N="slist.h"/>
271
+        </Folder>
272
+        <Folder
273
+            Name="Resource Files"
274
+            Filters="*.ico;*.cur;*.dlg"
275
+            GUID="{0869122B-FA2C-4353-B17D-F501C029B843}"/>
276
+        <Folder
277
+            Name="Bitmaps"
278
+            Filters="*.bmp"
279
+            GUID="{B64C7A96-D24B-4AB1-8E1F-A5E939F978E3}"/>
280
+        <Folder
281
+            Name="Other Files"
282
+            Filters=""
283
+            GUID="{4D0CAAFD-5325-4A7F-943B-14024E3CA7A4}">
284
+            <F
285
+                N="makefile"
286
+                Type="Makefile"/>
287
+        </Folder>
288
+    </Files>
289
+    <List Name="RTE">
290
+    </List>
291
+</Project>

+ 6
- 0
slist/se.vpw Voir le fichier

@@ -0,0 +1,6 @@
1
+<!DOCTYPE Workspace SYSTEM "http://www.slickedit.com/dtd/vse/10.0/vpw.dtd">
2
+<Workspace Version="10.0" VendorName="SlickEdit">
3
+    <Projects>
4
+        <Project File="se.vpj"/>
5
+    </Projects>
6
+</Workspace>

+ 209
- 0
slist/se.vpwhist Voir le fichier

@@ -0,0 +1,209 @@
1
+[Global]
2
+CurrentProject=se.vpj
3
+[ProjectDates]
4
+se.vpj=20210622050819444
5
+[ActiveConfig]
6
+se.vpj=,Debug
7
+[TreeExpansion2]
8
++@ se.vpj
9
+scroll:0
10
+[State]
11
+MONITOR_CONFIGS: 165
12
+MONITOR_CONFIG: 163 0 0 1920 1080
13
+SCREEN: 1920 1080 506 406 1921 1026 0 0 M 0 0 0 0 1212 946 0
14
+MDISTATE: 1
15
+AAAAAwAAAAIAAAAB2gAAAAIAMAAAAAAAAAAzAAAHfwAAA+QAAAAAAAAAAAAAB38AAAQPAAAAAuoAAABqAAAAAvsAAAABAAAAAQAAAAD7AAAAAQAAAAEAAAAA/AAAAEcAAAAAOgAyADoAOgA6AEQAOgBcAHcAaQBuAHMAaABhAHIAZQBcAHMAbABpAHMAdABcAHMAbABpAHMAdAAuAGMBAP////8AAQAAAAA=
16
+FULLSCREEN_LAYOUT: 49 1 44 0 4 N 0
17
+_tbbufftabs_form F=11
18
+_tbprojects_form F=8
19
+_tbdebug_watches_form F=64
20
+_tbbaseclasses_form F=40
21
+_tbdeltasave_form F=0
22
+_tbdebug_regs_form F=64
23
+_tbFTPOpen_form F=0
24
+_tbdebug_threads_form F=64
25
+_tbclipboard_form F=44
26
+_tbopen_form F=40
27
+_tbterminal_form F=8
28
+_tbdebug_exceptions_form F=384
29
+_tbdebug_classes_form F=64
30
+_tbtagwin_form F=8
31
+_tbdebug_autovars_form F=64
32
+_tbsymbolcallers_form F=40
33
+_tbFTPClient_form F=0
34
+_tbtagrefs_form F=8
35
+_tbfind_symbol_form F=32
36
+_tbdebug_locals_form F=64
37
+_tbdebug_members_form F=64
38
+_tbdebug_memory_form F=64
39
+_tbsymbol_args_form F=8
40
+_tbdebug_stack_form F=64
41
+_tbsymbolcalls_form F=40
42
+_tbsymbol_props_form F=8
43
+_tbfilelist_form F=44
44
+_tboutputwin_form F=8
45
+_tbclass_form F=8
46
+_tbunittest_form F=0
47
+_tbfind_form F=36
48
+_tbmessages_browser_form F=8
49
+_tbannotations_browser_form F=0
50
+_tbdebug_breakpoints_form F=384
51
+_tbnotification_form F=36
52
+_tbinteractive_form F=8
53
+_tbproctree_form F=8
54
+_tbbookmarks_form F=8
55
+_tbregex_form F=40
56
+_tbslickc_stack_form F=8
57
+_tbderivedclasses_form F=40
58
+_tbshell_form F=8
59
+_tbcbrowser_form F=8
60
+_tbsearch_form F=8
61
+AAAAAwAAAAEAAAAB2gAAAAIAMAAAAAAAAAA1AAAHfwAAA+MAAAAAAAAAAAAAB38AAAQPAAAAAesAAABwAAAAAPsAAAABAAAAAQAAAAD7AAAAAQAAAAEAAAAA/AAAACkAAAAAHAA6ADoAOgBNAEQASQBBAFIARQBBAFQASQBMAEUBAAAAB4AAAQAAAADbAAAAAAAAAALbAAAAAAAAAAHbAAAAAAAAAAPbAAAAAAAAAAA=
62
+QTOOLBAR 2 0
63
+AAAA/wAAAAD9AAAAAAAAB4AAAAOvAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAQAFMAdABhAG4AZABhAHIAZAEAAAAA/////wAAAAAAAAAAAAAAHgBDAHUAcgByAGUAbgB0ACAAQwBvAG4AdABlAHgAdAEAAAJx/////wAAAAAAAAAA
64
+_tbstandard_form 1
65
+_tbcontext_form 1
66
+STANDARD_LAYOUT: 54 1 44 5 4 M 0
67
+_tbbufftabs_form F=11
68
+_tbprojects_form F=8
69
+_tbdebug_watches_form F=64
70
+_tbbaseclasses_form F=40
71
+_tbdeltasave_form F=0
72
+_tbdebug_regs_form F=64
73
+_tbFTPOpen_form F=0
74
+_tbdebug_threads_form F=64
75
+_tbclipboard_form F=44
76
+_tbopen_form F=40
77
+_tbterminal_form F=8
78
+_tbdebug_exceptions_form F=384
79
+_tbdebug_classes_form F=64
80
+_tbtagwin_form F=8
81
+_tbdebug_autovars_form F=64
82
+_tbsymbolcallers_form F=40
83
+_tbFTPClient_form F=0
84
+_tbtagrefs_form F=8
85
+_tbfind_symbol_form F=32
86
+_tbdebug_locals_form F=64
87
+_tbdebug_members_form F=64
88
+_tbdebug_memory_form F=64
89
+_tbsymbol_args_form F=8
90
+_tbdebug_stack_form F=64
91
+_tbsymbolcalls_form F=40
92
+_tbsymbol_props_form F=8
93
+_tbfilelist_form F=44
94
+_tboutputwin_form F=8
95
+_tbclass_form F=8
96
+_tbunittest_form F=0
97
+_tbfind_form F=36
98
+_tbmessages_browser_form F=8
99
+_tbannotations_browser_form F=0
100
+_tbdebug_breakpoints_form F=384
101
+_tbnotification_form F=36
102
+_tbinteractive_form F=8
103
+_tbproctree_form F=8
104
+_tbbookmarks_form F=8
105
+_tbregex_form F=40
106
+_tbslickc_stack_form F=8
107
+_tbderivedclasses_form F=40
108
+_tbshell_form F=8
109
+_tbcbrowser_form F=8
110
+_tbsearch_form F=8
111
+_tbclass_form T=0
112
+_tbcbrowser_form T=0
113
+_tbproctree_form T=0
114
+_tbopen_form T=0
115
+_tbprojects_form T=0
116
+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
117
+QTOOLBAR 2 0
118
+AAAA/wAAAAD9AAAAAAAAB4AAAAOyAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAQAFMAdABhAG4AZABhAHIAZAEAAAAA/////wAAAAAAAAAAAAAAHgBDAHUAcgByAGUAbgB0ACAAQwBvAG4AdABlAHgAdAEAAAJg/////wAAAAAAAAAA
119
+_tbstandard_form 1
120
+_tbcontext_form 1
121
+APP_LAYOUT: 54 1 44 5 4 M 0
122
+_tbbufftabs_form F=11
123
+_tbprojects_form F=8
124
+_tbdebug_watches_form F=64
125
+_tbbaseclasses_form F=40
126
+_tbdeltasave_form F=0
127
+_tbdebug_regs_form F=64
128
+_tbFTPOpen_form F=0
129
+_tbdebug_threads_form F=64
130
+_tbclipboard_form F=44
131
+_tbopen_form F=40
132
+_tbterminal_form F=8
133
+_tbdebug_exceptions_form F=384
134
+_tbdebug_classes_form F=64
135
+_tbtagwin_form F=8
136
+_tbdebug_autovars_form F=64
137
+_tbsymbolcallers_form F=40
138
+_tbFTPClient_form F=0
139
+_tbtagrefs_form F=8
140
+_tbfind_symbol_form F=32
141
+_tbdebug_locals_form F=64
142
+_tbdebug_members_form F=64
143
+_tbdebug_memory_form F=64
144
+_tbsymbol_args_form F=8
145
+_tbdebug_stack_form F=64
146
+_tbsymbolcalls_form F=40
147
+_tbsymbol_props_form F=8
148
+_tbfilelist_form F=44
149
+_tboutputwin_form F=8
150
+_tbclass_form F=8
151
+_tbunittest_form F=0
152
+_tbfind_form F=36
153
+_tbmessages_browser_form F=8
154
+_tbannotations_browser_form F=0
155
+_tbdebug_breakpoints_form F=384
156
+_tbnotification_form F=36
157
+_tbinteractive_form F=8
158
+_tbproctree_form F=8
159
+_tbbookmarks_form F=8
160
+_tbregex_form F=40
161
+_tbslickc_stack_form F=8
162
+_tbderivedclasses_form F=40
163
+_tbshell_form F=8
164
+_tbcbrowser_form F=8
165
+_tbsearch_form F=8
166
+_tbclass_form T=0
167
+_tbcbrowser_form T=0
168
+_tbproctree_form T=0
169
+_tbopen_form T=0
170
+_tbprojects_form T=0
171
+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
172
+QTOOLBAR 2 0
173
+AAAA/wAAAAD9AAAAAAAAB4AAAAOyAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAQAFMAdABhAG4AZABhAHIAZAEAAAAA/////wAAAAAAAAAAAAAAHgBDAHUAcgByAGUAbgB0ACAAQwBvAG4AdABlAHgAdAEAAAJg/////wAAAAAAAAAA
174
+_tbstandard_form 1
175
+_tbcontext_form 1
176
+END_MONITOR_CONFIGS:
177
+CWD: ..\slist
178
+BUFFER: BN="slist.c"""""
179
+BI: MA=1 74 1  TABS= WWS=9 IWT= ST=8 IN=2 BW=0 US=32000 RO=0 SE=1 SN=0 BIN=0 MN=	HM=0 MF=120717920 TL=0 MLL=0 ASE=0 LNL=1 LCF=6 CAPS=0 E=0 ESBU2=-1 CL="Keywords Purple" SC="Automatic" SCE= SCU= ALM=0 FWRM=0 HMRE=0 HMRBW=0 SPCWT= SWF=2 SM= STAT=
180
+VIEW: LN=.5966 CL=25 LE=0 CX=25 CY=26 WI=5 BI=1 HT=0 HN=0 HF=0 HC=4 HB=4
181
+WINDOW: 1 22 1210 923 0 0 N  WF=0 WT=2 ",,," DID=0 MI="*,,,"
182
+BUFFER: BN="slist.c"""""
183
+VIEW: LN=.648 CL=6 LE=0 CX=11 CY=29 WI=338 BI=1 HT=0 HN=0 HF=0 HC=4 HB=4
184
+MDISTATE: 1
185
+AAAAAwAAAAIAAAAB2gAAAAIAMAAAAAAAAAAzAAAHfwAAA+QAAAAAAAAAAAAAB38AAAQPAAAAAuoAAABqAAAAAvsAAAABAAAAAQAAAAD7AAAAAQAAAAEAAAAA/AAAAEcAAAAAOgAyADoAOgA6AEQAOgBcAHcAaQBuAHMAaABhAHIAZQBcAHMAbABpAHMAdABcAHMAbABpAHMAdAAuAGMBAP////8AAQAAAAA=
186
+FILEHIST: 7
187
+\WorkSpace\gitea\SmartLock-v2\applications\main.c
188
+\WorkSpace\gitea\SmartLock-v2\board\board.c
189
+slist.h
190
+slist.o
191
+makefile
192
+slist
193
+slist.c
194
+ALLFILEHIST: 7
195
+slist.o
196
+slist.h
197
+slist.c
198
+slist
199
+makefile
200
+\WorkSpace\gitea\SmartLock-v2\applications\main.c
201
+\WorkSpace\gitea\SmartLock-v2\board\board.c
202
+DEBUG: 0 0 0 0 5 0 gdb
203
+printf
204
+strcpy
205
+strcmp
206
+std::*
207
+boost::*
208
+DEBUG2: 0
209
+TBCLASS: 0 0

BIN
slist/se.vtg Voir le fichier


BIN
slist/slist Voir le fichier


+ 393
- 0
slist/slist.c Voir le fichier

@@ -0,0 +1,393 @@
1
+/*
2
+ * @Author: your name
3
+ * @Date: 2021-06-20 17:11:37
4
+ * @LastEditTime: 2021-06-20 19:21:51
5
+ * @LastEditors: Please set LastEditors
6
+ * @Description: In User Settings Edit
7
+ * @FilePath: \slist\slist.c
8
+ */
9
+#include "slist.h"
10
+#include "stdlib.h"
11
+#include "stdio.h"
12
+
13
+
14
+pkt_node_t pkt_creat_slist(void)
15
+{
16
+    pkt_node_t p;
17
+
18
+    p = (pkt_node_t)malloc(sizeof(struct pkt_node));
19
+
20
+    p->next = NULL;
21
+    return p;
22
+}
23
+
24
+int pkt_get_slist_length(pkt_node_t l)
25
+{
26
+    PKT_ASSERT(l);
27
+
28
+    pkt_node_t p = l;
29
+    int i = 0;
30
+
31
+    while (p->next)
32
+    {
33
+        p = p->next;
34
+        i++;
35
+        printf("l[%d] = %d\n", i, p->data);
36
+    }
37
+
38
+    return i;
39
+}
40
+
41
+int pkt_insert_slist_head(pkt_node_t l, data_type data)
42
+{
43
+    PKT_ASSERT(l);
44
+    pkt_node_t p;
45
+    p = (pkt_node_t)malloc(sizeof(struct pkt_node));
46
+    if (p == NULL)
47
+    {
48
+        printf("no mem\n");
49
+        return -1;
50
+    }
51
+    p->next = l->next;
52
+    p->data = data;
53
+    l->next = p;
54
+
55
+    return 0;
56
+}
57
+
58
+int pkt_insert_slist_by_pos(pkt_node_t l, data_type data, int pos)
59
+{
60
+    PKT_ASSERT(l);
61
+    pkt_node_t p = l;
62
+    int i = 0;
63
+
64
+    if (pos < 0)
65
+    {
66
+        printf("error pos is < 0\n");
67
+        return 0;
68
+    }
69
+
70
+    while (p && pos > i)
71
+    {
72
+        p = p->next;
73
+        i++;
74
+    }
75
+
76
+    if (!p)
77
+    {
78
+        printf("input pos too big!\n");
79
+        return -1;
80
+    }
81
+
82
+    pkt_node_t n = (pkt_node_t)malloc(sizeof(struct pkt_node));
83
+    if (n == NULL)
84
+    {
85
+        printf("no mem\n");
86
+        return -1;
87
+    }
88
+    n->data = data;
89
+    n->next = p->next;
90
+    p->next = n;
91
+
92
+    return 0;
93
+}
94
+
95
+pkt_node_t pkt_find_node_by_pos(pkt_node_t l, int pos)
96
+{
97
+    pkt_node_t p = l->next;
98
+    int i = 0;
99
+    if (pos < 0)
100
+    {
101
+        printf("error pos is < 0\n");
102
+        return NULL;
103
+    }
104
+
105
+    while (p->next && pos > i)
106
+    {
107
+        p = p->next;
108
+        i++;
109
+    }
110
+
111
+    if (pos == i)
112
+    {
113
+        return p;
114
+    }
115
+    
116
+    printf("input pos is too big\n");
117
+    return NULL;
118
+}
119
+
120
+pkt_node_t pkt_find_node_by_data(pkt_node_t l, data_type data)
121
+{
122
+    pkt_node_t p = l->next;
123
+
124
+    while (p && p->data != data)
125
+    {
126
+        p = p->next;
127
+    }
128
+
129
+    if (p == NULL)
130
+    {
131
+        printf("no find this data node\n");
132
+        return NULL;
133
+    }
134
+
135
+    return p;
136
+}
137
+
138
+int pkt_del_node_by_pos(pkt_node_t l, int pos)
139
+{
140
+    PKT_ASSERT(l);
141
+
142
+    if (pos < 0)
143
+    {
144
+        printf("error pos is < 0\n");
145
+        return -1;
146
+    }
147
+
148
+    pkt_node_t p;
149
+
150
+    if (pos == 0)
151
+    {
152
+        p = l;
153
+    }
154
+    else
155
+    {
156
+        p = pkt_find_node_by_pos(l, pos - 1);
157
+    }
158
+
159
+    if (p == NULL && p->next) /* if [->next == NULL],  is at list tail, did not del tail->next */
160
+    {
161
+        return -1;
162
+    }
163
+
164
+    pkt_node_t del = p->next;
165
+    p->next = p->next->next;
166
+    free(del);
167
+    return 0;
168
+}
169
+
170
+/* delete node from list */
171
+int pkt_del_node(pkt_node_t l, pkt_node_t n)
172
+{
173
+    pkt_node_t p = l;
174
+    
175
+    while (p && p->next != n)
176
+    {
177
+        p = p->next;
178
+    }
179
+
180
+    if (!p->next)
181
+    {
182
+        return -1;
183
+    }
184
+
185
+    p->next = p->next->next;
186
+    free(n);
187
+    return 0;
188
+}
189
+
190
+/* frist find the node by data, then delete node */
191
+int pkt_del_node_by_data(pkt_node_t l, data_type data)
192
+{
193
+    PKT_ASSERT(l);
194
+    pkt_node_t p;
195
+
196
+    if ((p = pkt_find_node_by_data(l, data)) == NULL)
197
+    {
198
+        return -1;
199
+    }
200
+
201
+    return pkt_del_node(l, p);
202
+}
203
+
204
+int pkt_rever_slist(pkt_node_t l)
205
+{
206
+    PKT_ASSERT(l);
207
+
208
+    if (!l->next)
209
+    {
210
+        printf("this is a empty list\n");
211
+        return -1;
212
+    }
213
+#if 0
214
+    pkt_node_t p1 = l->next;
215
+    pkt_node_t p2 = l->next->next;
216
+    p1->next = NULL;
217
+
218
+    pkt_node_t tmp;
219
+    while (p2)
220
+    {
221
+        tmp = p2->next;
222
+        p2->next = p1;
223
+        p1 = p2;
224
+        p2 = tmp;
225
+    }
226
+
227
+    l->next = p1; /* head next point p1 */
228
+#else
229
+    pkt_node_t p1 = l->next;
230
+    pkt_node_t tmp;
231
+    l->next = NULL; /* empty the list */
232
+
233
+    while (p1)
234
+    {
235
+        tmp = p1;  /* unattach a node tmp */
236
+        p1 = p1->next;
237
+        tmp->next = l->next; /* insert tmp node to head */
238
+        l->next = tmp;
239
+    }
240
+
241
+#endif
242
+    return 0;
243
+}
244
+
245
+int pkt_insert_node_by_data_order(pkt_node_t l, data_type data)
246
+{
247
+    PKT_ASSERT(l);
248
+    pkt_node_t p = l;
249
+
250
+    while (p->next && data < p->next->data)
251
+    {
252
+        p = p->next;
253
+    }
254
+
255
+    pkt_node_t n = (pkt_node_t)malloc(sizeof(struct pkt_node));
256
+    if (n == NULL)
257
+    {
258
+        return -1;
259
+    }
260
+
261
+    n->data = data;
262
+    n->next = p->next;
263
+    p->next = n;
264
+
265
+    return 0;
266
+}
267
+
268
+int pkt_list_by_data_order(pkt_node_t l)
269
+{
270
+    PKT_ASSERT(l);
271
+
272
+    if (!l->next || !l->next->next)
273
+    {
274
+        printf("this list node <= 1\n");
275
+        return -1;
276
+    }
277
+
278
+    pkt_node_t p = l->next->next;
279
+    pkt_node_t r = l;
280
+    r->next->next = NULL;
281
+    pkt_node_t q;
282
+    
283
+    while (p->next)
284
+    {
285
+        q = p;
286
+        p = p->next;
287
+        
288
+        r = l;
289
+        while (r->next && q->data > r->next->data) /* ascending order */
290
+        {
291
+            r = r->next;
292
+        }
293
+        q->next = r->next;
294
+        r->next = q;
295
+    }
296
+
297
+    return 0;
298
+}
299
+
300
+int pkt_list_by_data_order_with_fun(pkt_node_t l, int (*cmp)(pkt_node_t l1, pkt_node_t l2))
301
+{
302
+    PKT_ASSERT(l);
303
+
304
+    if (!l->next || !l->next->next)
305
+    {
306
+        printf("this list node <= 1\n");
307
+        return -1;
308
+    }
309
+
310
+    pkt_node_t p = l->next->next;
311
+    pkt_node_t r = l;
312
+    r->next->next = NULL;
313
+    pkt_node_t q;
314
+
315
+    while (p->next)
316
+    {
317
+        q = p;
318
+        p = p->next;
319
+        
320
+        r = l;
321
+        while (r->next && !cmp(r->next, q))
322
+        {
323
+            r = r->next;
324
+        }
325
+        q->next = r->next;
326
+        r->next = q;
327
+    }
328
+
329
+    return 0;
330
+}
331
+
332
+int cmp(pkt_node_t l1, pkt_node_t l2)
333
+{
334
+    if (l2->data > l1->data)
335
+    {
336
+        return 0;
337
+    }
338
+
339
+    return 1;
340
+}
341
+
342
+int main(int argc, char **argv)
343
+{
344
+    pkt_node_t slist;
345
+
346
+    slist = pkt_creat_slist();
347
+#if 1
348
+    pkt_insert_slist_head(slist, 22);
349
+    pkt_insert_slist_head(slist, 47);
350
+    pkt_insert_slist_head(slist, 89);
351
+    pkt_insert_slist_head(slist, 44);
352
+    pkt_insert_slist_head(slist, 6568);
353
+    pkt_insert_slist_head(slist, 77);
354
+#else
355
+    pkt_insert_node_by_data_order(slist, 99);
356
+    pkt_insert_node_by_data_order(slist, 1);
357
+    pkt_insert_node_by_data_order(slist, 5);
358
+#endif
359
+    pkt_list_by_data_order(slist);
360
+    pkt_get_slist_length(slist);
361
+  int pos;
362
+  while (1)
363
+  {
364
+  scanf("%d", &pos);
365
+#if 0
366
+    pkt_node_t node = pkt_find_node_by_pos(slist, pos);
367
+
368
+    if (node)
369
+    {
370
+        printf("pos%d data: %d\n", pos, node->data);
371
+    }
372
+#elif 0
373
+    pkt_find_node_by_data(slist, pos);
374
+#elif 0
375
+    pkt_insert_slist_by_pos(slist, 100, pos);
376
+    pkt_get_slist_length(slist);
377
+#elif 0
378
+    pkt_del_node_by_pos(slist, pos);
379
+    pkt_get_slist_length(slist);
380
+#elif 0
381
+    pkt_del_node_by_data(slist, pos);
382
+    pkt_get_slist_length(slist);
383
+#elif 0
384
+    printf("==========================================\n");
385
+    pkt_rever_slist(slist);
386
+    pkt_get_slist_length(slist);
387
+#elif 1
388
+    pkt_insert_node_by_data_order(slist, pos);
389
+    pkt_get_slist_length(slist);
390
+  }
391
+#endif
392
+    return 0;
393
+}

+ 24
- 0
slist/slist.h Voir le fichier

@@ -0,0 +1,24 @@
1
+/*
2
+ * @Author: your name
3
+ * @Date: 2021-06-20 17:11:26
4
+ * @LastEditTime: 2021-06-20 18:05:33
5
+ * @LastEditors: Please set LastEditors
6
+ * @Description: In User Settings Edit
7
+ * @FilePath: \slist\slist.h
8
+ */
9
+#ifndef _SLIST_H_
10
+#define _SLIST_H_
11
+
12
+#define PKT_ASSERT(x) {if ((x) == NULL) {printf("%s %d: assert failed!", __FUNCTION__, __LINE__); while(1);}}
13
+typedef int data_type;
14
+
15
+typedef struct pkt_node *pkt_node_t;
16
+
17
+struct pkt_node
18
+{
19
+    pkt_node_t next;
20
+    data_type data;
21
+};
22
+
23
+
24
+#endif

BIN
slist/slist.o Voir le fichier


Chargement…
Annuler
Enregistrer