2 u013566664 u013566664 于 2014.10.13 22:09 提问

链表循环打印崩溃问题

#include
#include
struct Grade_Info
{
int score;
struct Grade_Info *next;
};

typedef struct Grade_Info NODE;

NODE creat ( )

{
NODE *head, *tail, *pnew;
int score;
head = (NODE
)malloc (sizeof(NODE));

head->next = NULL;    /
tail = head;
printf ("input the score of students:\n");

while (1)

{
scanf ("%d", &score);

if (score < 0)

break;

pnew = (NODE *)malloc (sizeof(NODE));

pnew->score = score;
pnew->next = NULL;
tail->next = pnew;
tail = pnew;
}

return head;
}
NODE *samevalue(NODE *a,NODE *b,NODE *c)
{
NODE *pa,*pb,*pc;
pc=c;
pa=a->next;pb=b->next;
while(pa&&pb)
{
if(pa->score-pb->score pa=pa->next;
else if(pa->score-pb->score>0)
pb=pb->next;
else
{
c->next=pa;
c=c->next;
pa=pa->next;
pb=pb->next;

        }
    }
    c->next=NULL;

    return pc;

}

int main ()
{
NODE *a,*b,*c;
a=creat();
b=creat();
c=samevalue(a,b,c);
c=c->next;
while(c)
{printf("%d ",c->score);
c=c->next;
}

}
main里一个一个打印score就可以,用循环就崩溃,我都快崩溃了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
gdb-如何在gdb里自动打印一个链表的方法:写一小段执行嵌套脚本
在调试问题时,使用core文件和gdb来定位时。 发现需要打印错误地方的一个链表,想把这个链表全部打完需要不停的手敲next,将下一个节点打出,然后输入p命令加上变量名。 想到之前看到gdb里也可以用编程的,所以尝试了一下。 敲完while命令后,用help提示了几条如何写的规则:所有的命令(包括while)都是要放在最前面,而且一条命令一行,最后while命令要用单独一行的end来结束
剑指offer: 从尾到头打印链表(链表)
题目: 题目描述 输入一个链表,从尾到头打印链表每个节点的值。返回新链表。 分析: 逆转链表,与栈顺序一致,可以用辅助栈解决这个问题。 代码: vector printListFromTailToHead(struct ListNode* head) { vector stack; vector result; wh
面试题:从尾到头打印链表
题目:输入一个链表的头结点,从尾到头打印链表。 本篇博客共介绍两种方式(c++代码): 方法1:递归方式 假设要求不改变链表的结构。 这种方式想必大家都可以想到的,借助链表的头文件(SList.h),此处不再粘贴代码。 https://blog.csdn.net/kai29/article/details/78966034 //递归方式 void PrintTailToFrontR...
用循环链表解决报数淘汰问题
100人围成一个圈,每人有一个编码,编码从1到100。他们开始从1开始依次报数,报到M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人小于M。输出剩下的人原先的号码,M=3时为:58,91,M=4时为34,45,97.
GDB中 打印出链表的值
这个东东怎么弄? 回去网上查查
c++ 数据结构 用循环单链表解决约瑟夫问题
循环链表为单链表的变形,与单链表的区别在于循环链表的尾结点的指针域不是空,存放的是首结点的地址,因此判断表空的条件不是first->Link==NULL;而是first->Link==first; 约瑟夫问题的求解关键为把围坐一圈的人抽象成循环单链表的数据结构。
从尾到头打印链表(Java)
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。**解析:很多人第一反应是从头到尾输出将会比较简单,于是自然想到把链表中连接结点的指针反转过来,改变链表的方向即可。但该方法会改变原来链表的结构,是否允许在打印链表的时候修改链表的结构,这点取决于面试官的需求。 **通常打印是一个只读操作,我们不希望打印时修改内容。 **细读题意,第一个遍历到的结点最后一个输出,而最后一个遍历到的结点
递归逆序打印单链表(c实现)
递归逆序打印单链表。交换打印语句和递归调用的顺序,可以实现顺序打印和逆序打印链表。 #include #include typedef struct Node { int data; struct Node *next; }Node ; Node *create_list(int *arr,const int len) { if(arr==NULL||len<=0) { retu
怎样检测链表中存在循环?
这应该是一个比较老的题目,在一次面试的过程中碰到过该题目,并没有能够给出最佳的答案。当时面试时没有其他条件的限制,却只能给出了几乎是最差的答案;当看到这个命题一步一步的限制的时候,我也只能给出第三步的答案。 昨天有幸又翻到了这个题目,自己顺手做做,居然仍然没有太多的进步,最佳答案的思路在脑海里面已经不复存在,今天就拿这个题目温习一下,有兴趣的人也可以一步一步的思考下去看看。(在《编程之美》中也是
链表逆置和从尾到头打印单链表
&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; 链表的逆置和链表从尾到头打印是两个不同的概念,链表的逆置就是将链表(a1,a2,a3…an)转化为(an,a(n-1),..a1),链表结构会发生改变;而从尾到头打印链表是将链表中的元素逆序打印,即从尾结点开始依次打印,链表的结构不发生改变。 &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp