社区讨论
80分TLE
B3631单向链表参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m25i65v4
- 此快照首次捕获于
- 2024/10/12 09:53 去年
- 此快照最后确认于
- 2025/11/04 17:24 4 个月前
C
#include<stdio.h>
#include<stdlib.h>
int a[100005];
int b[100005];
typedef struct map
{
int data;
struct map* next;
}map;
void Initmap(map* head)
{
head->data = 1;
head->next = NULL;
}
//创建节点
map* CreateNewNode(int x)
{
map* NewNode = (map*)malloc(sizeof(map));
NewNode->data = x;
NewNode->next = NULL;
return NewNode;
}
//查询指定值节点
map* Search(int x, map* head)
{
map* cur = head;
while (cur != NULL)
{
if (cur->data == x)
{
return cur;
}
cur = cur->next;
}
return NULL;
}
//插在指定节点后
void PushMaptail(map* head,int x,int y)
{
map* cur = Search(x, head);
if (cur->next == NULL)
{
map* NewNode = CreateNewNode(y);
cur->next = NewNode;
return;
}
else
{
map* prev = cur->next;
map* NewNode = CreateNewNode(y);
cur->next = NewNode;
NewNode->next = prev;
}
}
//查找节点后位置
int Find(int node,map*head)
{
map* cur = Search(node, head);
if(cur->next!=NULL)
{
cur = cur->next;
return cur->data;
}
else
{
return 0;
}
}
//删除指定位置后元素
void PopMap(int x, map* head)
{
map* cur = Search(x, head);
if (cur->next == NULL)
{
printf("无可删元素");
return;
}
map* curr = cur->next;
cur->next = curr->next;
free(curr);
}
int main()
{
map* ahead = (map*)malloc(sizeof(map));
Initmap(ahead);
int n,i=1,x,y,tb=0;
scanf("%d", &n);
do
{
scanf("%d", &a[i]);
switch(a[i])
{
case 1:
{
scanf("%d%d", &x, &y);
PushMaptail(ahead, x, y);
break;
}
case 2:
{
scanf("%d", &x);
b[tb++] = Find(x, ahead);
break;
}
case 3:
{
scanf("%d", &x);
PopMap(x, ahead);
break;
}
default:
{
printf("输入错误");
}
}
i++;
} while (i <= n);
for (int j = 0; j < tb; j++)
{
printf("%d\n", b[j]);
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...