Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
O
open-ccode
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
bh
open-ccode
Commits
6711a7bc
提交
6711a7bc
authored
12月 14, 2022
作者:
bh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增栈代码
上级
fbd715b2
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
116 行增加
和
2 行删除
+116
-2
twoSideCycleList.c
node/twoSideCycleList.c
+1
-1
twoSideList.c
node/twoSideList.c
+1
-1
stack.c
stack/stack.c
+114
-0
没有找到文件。
node/twoSideCycleList.c
浏览文件 @
6711a7bc
//
//
// Created by
zxs
h-1 on 2022/12/14.
// Created by
b
h-1 on 2022/12/14.
//
//
#include "stdio.h"
#include "stdio.h"
#include "string.h"
#include "string.h"
...
...
node/twoSideList.c
浏览文件 @
6711a7bc
//
//
// Created by
zxs
h-1 on 2022/12/14.
// Created by
b
h-1 on 2022/12/14.
//
//
#include "stdio.h"
#include "stdio.h"
...
...
stack/stack.c
0 → 100644
浏览文件 @
6711a7bc
//
// Created by bh-1 on 2022/12/14.
//
#include "stdio.h"
#include "malloc.h"
#include "string.h"
// 栈,先进后出
typedef
struct
stack
{
int
len
;
char
name
[
10
];
struct
stack
*
next
;
struct
stack
*
prev
;
}
Stack
;
Stack
*
create
(){
return
(
Stack
*
)
malloc
(
sizeof
(
Stack
));
}
// 入栈
// 思路:先进后出。对于单向不循环链式结构来说,应该在链头插入,然后从头开始往尾读取
void
enStack
(
Stack
*
bottom
,
Stack
*
newMen
){
Stack
*
upMem
=
bottom
;
while
(
upMem
->
prev
){
upMem
=
upMem
->
prev
;
// 获取最后入栈的一个节点
}
// 向最后一个入栈的节点(栈顶)前面追加newMen
newMen
->
prev
=
NULL
;
newMen
->
next
=
upMem
;
upMem
->
prev
=
newMen
;
bottom
->
len
++
;
}
// 出栈
Stack
*
deStack
(
Stack
*
bottom
){
Stack
*
upMem
=
bottom
;
while
(
upMem
->
prev
){
upMem
=
upMem
->
prev
;
}
Stack
*
deStack
=
(
Stack
*
)
malloc
(
sizeof
(
Stack
));
/*deStack->len=upMem->len;
strcpy(deStack->name,upMem->name);
deStack->prev=upMem->prev;
deStack->next=upMem->next;*/
memcpy
(
deStack
,
upMem
,
sizeof
(
Stack
));
// 复制结构体
upMem
->
next
->
prev
=
NULL
;
free
(
upMem
);
bottom
->
len
--
;
return
deStack
;
}
// 从栈顶开始打印到栈底
void
printStackList
(
Stack
*
bottom
){
Stack
*
upMen
=
bottom
;
while
(
upMen
->
prev
){
upMen
=
upMen
->
prev
;
}
while
(
upMen
->
next
){
printf
(
"name=%s,len=%d,upMen=%p,mem=%p,downMem=%p
\n
"
,
upMen
->
name
,
upMen
->
len
,
upMen
->
prev
,
upMen
,
upMen
->
next
);
upMen
=
upMen
->
next
;
}
printf
(
"name=%s,len=%d,upMen=%p,mem=%p,downMem=%p
\n
"
,
upMen
->
name
,
upMen
->
len
,
upMen
->
prev
,
upMen
,
upMen
->
next
);
}
int
main
()
{
Stack
*
bottom
=
create
();
strcpy
(
bottom
->
name
,
"bottom"
);
bottom
->
len
=
0
;
bottom
->
prev
=
NULL
;
bottom
->
next
=
NULL
;
bottom
->
len
++
;
Stack
*
men1
=
create
();
strcpy
(
men1
->
name
,
"mem1"
);
enStack
(
bottom
,
men1
);
Stack
*
men2
=
create
();
strcpy
(
men2
->
name
,
"men2"
);
enStack
(
bottom
,
men2
);
Stack
*
men3
=
create
();
strcpy
(
men3
->
name
,
"men3"
);
enStack
(
bottom
,
men3
);
Stack
*
men4
=
create
();
strcpy
(
men4
->
name
,
"men4"
);
enStack
(
bottom
,
men4
);
printStackList
(
bottom
);
Stack
*
outMen1
=
deStack
(
bottom
);
printf
(
"========出栈数据:======
\n
"
);
printf
(
"name=%s,len=%d,upMen=%p,mem=%p,downMem=%p
\n
"
,
outMen1
->
name
,
outMen1
->
len
,
outMen1
->
prev
,
outMen1
,
outMen1
->
next
);
printf
(
"========出栈后剩余数据============
\n
"
);
printStackList
(
bottom
);
Stack
*
outMen2
=
deStack
(
bottom
);
printf
(
"========出栈数据:======
\n
"
);
printf
(
"name=%s,len=%d,upMen=%p,mem=%p,downMem=%p
\n
"
,
outMen2
->
name
,
outMen2
->
len
,
outMen2
->
prev
,
outMen2
,
outMen2
->
next
);
printf
(
"========出栈后剩余数据============
\n
"
);
printStackList
(
bottom
);
return
0
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论