求实习:更正一下,确实是自己的问题,首先是牛客网在线编程多数题目要求的是循环输入的,有两周没刷题了,给忘记了,感谢@八宝菊花茶 的改正。
其次 一旦涉及循环输入,就要保证每次循环变量都要重新初始化,所以我就将 tail = head;
first = head; 这两个赋值在每次循环中重新赋值一次。这时程序实现上已经没有问题了,再次提交,出现了堆栈溢出的情况,仔细查看发现是malloc没有配合free使用,所以在最后释放了链表占用的所有内存,只留下了头结点。奉上最新代码
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *pNext;
}NODE,*PNODE;
int main(void)
{
int len,i,key,val;
PNODE q,r;
PNODE head = (PNODE)malloc(sizeof(NODE));
PNODE tail = head;
PNODE first = head;
head->pNext = NULL;
while(scanf("%d",&len) != EOF){
for(i = 0;i < len;i++)
{
PNODE p = (PNODE)malloc(sizeof(NODE));
scanf("%d",&val);
p->data = val;
tail->pNext = p;
p->pNext = NULL;
tail = p;
}
scanf("%d",&key);
if(key == 0)
printf("0\n");
else{
for(i = 0;i<=len-key;i++)
first = first->pNext;
printf("%d\n",first->data);
}
q = head->pNext;
for(i = len;i>0;i--)
{
r = q->pNext;
free(q);
q = r;
}
first = head;
tail = head;
}
return 0;
}
0 点赞 评论 收藏
分享
2017-04-15 22:14
山东大学(威海) 运维工程师 0 点赞 评论 收藏
分享
2017-04-05 08:50
山东大学(威海) 运维工程师 0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: