求大神指导,链表完全还给老师的! 编译没错,但是输入10之后跳不出结果!
答案:1 悬赏:50 手机版
解决时间 2021-04-04 13:29
- 提问者网友:嗝是迷路的屁
- 2021-04-04 00:55
求大神指导,链表完全还给老师的! 编译没错,但是输入10之后跳不出结果!
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-04-04 01:53
我想您一定是位不拘小节的人。
SLNode * ListInit(int n)函数中while的循环条件错了,应该是当n>=0时循环。而n<0时就停止循环了。
malloc函数需要头文件#include
malloc出来的空间,如果不用了,就显式得把它释放掉。因此建议多一写一个函数。
#include
//以下对应第2条
#include
typedef int DataType;
typedef struct Node{
DataType data;
DataType node;
struct Node *next;
}SLNode;
SLNode * ListInit(int n){
SLNode *head;
SLNode *p,*s;
head=(SLNode *)malloc(sizeof(SLNode));
head->next=NULL;
p=head;
//以下对应第1条
while(n>=0){
s=(SLNode *)malloc(sizeof(SLNode));
s->data=n;
p->next=s;
s->next=NULL;
p=p->next;
n--;
}
return head;
}
//以下对应第3条
SLNode * Listclear(SLNode* head){
SLNode* p = head;
while(p){
head = p->next;
free(p);
p = head;
}
return NULL;
}
void main()
{
int n,i;
SLNode *head,*p;
head=(SLNode *)malloc(sizeof(SLNode));
printf("请输入队列长度:");
scanf("%d",&n);
head = ListInit(n);
p = head;
for(i=0;i p=p->next;
printf("%d ",p->data);
}
//以下对应第3条
head = Listclear(head);
}
SLNode * ListInit(int n)函数中while的循环条件错了,应该是当n>=0时循环。而n<0时就停止循环了。
malloc函数需要头文件#include
malloc出来的空间,如果不用了,就显式得把它释放掉。因此建议多一写一个函数。
#include
//以下对应第2条
#include
typedef int DataType;
typedef struct Node{
DataType data;
DataType node;
struct Node *next;
}SLNode;
SLNode * ListInit(int n){
SLNode *head;
SLNode *p,*s;
head=(SLNode *)malloc(sizeof(SLNode));
head->next=NULL;
p=head;
//以下对应第1条
while(n>=0){
s=(SLNode *)malloc(sizeof(SLNode));
s->data=n;
p->next=s;
s->next=NULL;
p=p->next;
n--;
}
return head;
}
//以下对应第3条
SLNode * Listclear(SLNode* head){
SLNode* p = head;
while(p){
head = p->next;
free(p);
p = head;
}
return NULL;
}
void main()
{
int n,i;
SLNode *head,*p;
head=(SLNode *)malloc(sizeof(SLNode));
printf("请输入队列长度:");
scanf("%d",&n);
head = ListInit(n);
p = head;
for(i=0;i
printf("%d ",p->data);
}
//以下对应第3条
head = Listclear(head);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯