单链表--指定结点前插操作
本帖最后由 163585580 于 2021-4-24 16:44 编辑求助各位大佬,下面是单链表--指定结点前插操作的代码,有两个问题就是
1.中间:s->data=e;合不合法,是否去掉不写也行?
2.各位大佬学数据结构的时候用的是啥编译器啊?咱跟王道书上敲得一摸一样,但CLion里面就是运行不了?感觉这代码既有c又有c++,(c里的指针,c++的引用符号&),现在都是手写{:1_923:} ,敲了也报错,各位大佬当初是用什么办法解决的呀?
//LNode *p:指指定的结点,ElemType e:指要插入的元素
bool InsertPriorNode(LNode *p,ElemType e){
if(p==NULL){
return false;
}
LNode *s=(LNode *)malloc(sizeof(LNode));
if(s==NULL){
return false;
}
s->data=e;
s->next=p-next;
p->next=s;
s->data=p->data;
p-data=e;
return true;
}
这段代码没有引用啊,我看着是只有C语言 本帖最后由 EzGDNull 于 2021-5-1 00:16 编辑
#define ElemType int
typedef struct LNode {
ElemType data; //数据域
struct LNode* next; //指针域
}LNode, * LinkList;
bool InsertPriorNode(LNode* p, ElemType e) {
if (p == NULL) {
return false;
}
int tempt;
LNode* s = (LNode*)malloc(sizeof(LNode));
if (s == NULL) {
return false;
}
s->data = e;
s->next = p->next;
p->next = s;
tempt = s->data;
s->data = p->data;
p->data = tempt; return true;
}
int main(void)
{
LNode* l1 = (LNode*)malloc(sizeof(LNode));
l1->data = 1;
l1->next = NULL;
LNode* l2 = (LNode*)malloc(sizeof(LNode));
l2->data = 3;
l2->next = NULL;
l1->next = l2;
InsertPriorNode(l2, 2);
while (l1)
{
printf("%d\n", l1->data);
l1 = l1->next;
}
system("pause"); return 0;
}
在p的节点后插入一个节点,然后将p节点的值和插入节点的值交换,这就相当于在p节点前插入一个节点了,第一个问题:你的代码中这一句s->data=e;是必须的,后面的代码就有点不对了;
第二个问题,我上面代码是在vs2020中运行的,只要声明好结构体和数据类型,应该用什么编译器都可以。上面代码都是c语言,没有用到c++。
页:
[1]