社区讨论
蒟蒻求救单链表
学术版参与者 2已保存回复 14
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @mi86an90
- 此快照首次捕获于
- 2025/11/21 09:19 4 个月前
- 此快照最后确认于
- 2025/11/21 09:51 4 个月前
能看一看哪里出问题了吗
CPP//头结点是指向第一个元素节点(线性表的基地址)
//若线性链表为空,在不带头结点的情况下,该链表为空
#include <bits/stdc++.h>
using namespace std;
const int MAXSIZE = 81;
//声明
typedef struct Lnode
{
int data;
struct Lnode *next;
}*Slink;
Lnode *p,*q;//指向链表节点的p,q指针
Slink H; //指向链表指针H,头指针
//初始化,时间复杂度为 $ O(1) $
void InitList(Slink &L)
{
L = new Lnode;
if(!L) exit(1);//储存空间分配失败,竞赛似乎用不到
L->next = NULL;//指向安全位置
}
//读入,似乎也有问题
void input(Slink &L)
{
p = L->next;
while(cin >> p->data)
{
p = p->next;
}
}
//销毁单链表
//避免内存泄漏 ***
void DestoryList(Slink &L)
{
while(L)
{
p = L;
L = L->next;
delete p;
}
L = NULL;
}
//取第i个元素的值,问题大大的
void getelem_1(Slink &L,int i)
{
int k = 0;
while(L)
{
q = L;
L = L->next;
k++;
if(k == i)
{
printf("%d\n",L->data);
break;
}
}
return;
}
bool getelem_2(Slink L,int pos)
{
p = L->next;
int j = 1;
while(p && j < pos)
{
p = p->next;
++j;
}
if(!p || j > pos)
return false;
printf("%d\n",p->data);
return true;
}
//插入一个节点
bool Insert(Slink &L,int pos,int num)
{
p = L->next;
Slink s;
int j = 0;
s = new Lnode;
while(p && j < pos-1)
{
p = p->next;
++j;
}
//插入
if(j == pos)
{
s->data = num;
s->next = p->next;
p->next = s;
}
return true;
}
//输出
void print(Slink &L)
{
p = L->next;
while(p)
{
printf("%d ",p->data);
p = p->next;
}
}
int main()
{
freopen("test.in","r",stdin);
Slink L;
InitList(L);
input(L);//input有问题
Insert(L,3,9);//在第三个位置插入9
// getelem_2(L,6);//i为第i个节点的值
print(L);
DestoryList(L);
return 0;
}
回复
共 14 条回复,欢迎继续交流。
正在加载回复...