本帖最后由 EzGDNull 于 2021-5-1 00:16 编辑
[C] 纯文本查看 复制代码 #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++。 |