这个地方感觉逻辑没问题0.0 但是p-next一直报越界的错误
代码不全,错误行也看不到,
从你给的这些代码看,
好好学习变量的作用域
函数无返回值,只给函数一个值,分配的变量或地址空间如何让主函数使用?
尾插法不对吧兄弟,28,29两行只是把新结点放到头结点的位置,但是原来的头结点以及后面的结点会丢失的啊,应该改为
p->next=q->next;
q->next=p;
这段代码错误的原因,是初始化函数没写正确,修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#define ElemType int
typedef struct lnode {
ElemType data;
struct lnode* next;
}lnode,*list;
//初始化链表
void init(list* head)
{
(*head) = (list)malloc(sizeof(lnode));
(*head)->data = 0;
(*head)->next = NULL;
}
//尾插法
void create(list head)
{
list q = head;
int n = 0;
scanf("%d", &n);
while (n != 999) {
list p = (list)malloc(sizeof(lnode));
p->data = n;
p->next = NULL;
q->next = p;
q = p;
scanf("%d", &n);
}
}
void print(list head)
{
list p = head;
while (p->next) {
printf("%d ", p->next->data);
p = p->next;
}
printf("\n");
}
int main()
{
list l;
init(&l);
create(l);
print(l);
return 0;
}