加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2015_code_link.cpp 1.05 KB
一键复制 编辑 原始数据 按行查看 历史
xusun000 提交于 2021-12-01 16:31 . 更改名称
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node {
int data;
struct node* link;
}NODE;
void create(NODE* p, int a[], int pos, int length) {
if (pos < length) {
p->data = a[pos];
p->link = (NODE*)malloc(sizeof(NODE));
p->link->data = INT_MIN;//用INT_MIN作为结束标志
create(p->link, a, pos + 1, length);
}
}
void deleteNode(NODE* p, int n, int length) {
int* a = (int*)malloc(sizeof(int) * (n + 1));
memset(a, 0, sizeof(int) * (n + 1));
NODE* pHead = p, * q;
a[p->data > 0 ? p->data : -p->data] = 1;
while (p->link != NULL && p->link->data != INT_MIN) {
int t = (p->link->data) > 0 ? p->link->data : -p->link->data;
if (a[t] == 1) {
q = p->link;
p->link = q->link;
free(q);
}
else {
a[t] = 1;
p = p->link;
}
}
}
int main() {
int a[] = { -5,5,9,17,5,5,5,-3,2,5 };
NODE pStart;
create(&pStart, a, 0, 10);
deleteNode(&pStart, 100, 10);
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化