yjdgv 发表于 2007-11-4 18:33

链表的操作

<P>设有一个线性单链表,其结点值均为整数(正整数,0,负整数),且按绝对值从小到大链接。试写出一个算法,将此线性单链表中的结点按值从小到大链接。<BR>上述是题目:下面是代码可是运行不对请各位指教<BR>#include&lt;stdio.h&gt;<BR>typedef struct node<BR>{<BR>int data;<BR> struct node *next ;<BR>}node;<BR>node *create()<BR>{<BR>int a;<BR>node *p,*q,*head;<BR>char ch;<BR>ch='*';<BR>head=(node*)malloc(sizeof(node));<BR>q=head;<BR>printf("please input the list:");<BR>while(ch!='?')<BR>{<BR>scanf("%d",&amp;a);<BR>p=(node*)malloc(sizeof(node));<BR>p-&gt;data=a;<BR>q-&gt;next=p;<BR>q=p;</P>
<P>}<BR>q-&gt;next=NULL;<BR>return (head);<BR>}<BR>node *tran(node *head)<BR>{<BR>node *p,*q,*r;<BR>p=head-&gt;next;<BR>q=p-&gt;next;</P>
<P>while(p!=NULL)<BR>{r=q-&gt;next;<BR>if(q-&gt;data&lt;0)<BR>{<BR>p-&gt;next=r;<BR>q-&gt;next=p;<BR>p=q;<BR>q=r;<BR>}<BR>else<BR>p=p-&gt;next;<BR>}<BR>head-&gt;next=p;<BR>return(head);<BR>}<BR>main()<BR>{<BR>node *p,*q;<BR>p=create();<BR>q=tran(p);<BR>q=q-&gt;next;<BR>while(q!=NULL)<BR>{<BR>printf("%d",q-&gt;data);<BR>q=q-&gt;next;<BR>}<BR>getch();<BR>}</P>

柒兲 发表于 2007-11-4 18:57

没有加<BR>#include &lt;malloc.h&gt;  动态分配内存头文件

yjdgv 发表于 2007-11-4 19:04

回复:(yjdgv)链表的操作

    还是不行啊请帮看看是不是定义函数的问题啊<br>

柒兲 发表于 2007-11-4 19:19

while(ch!='?')<BR>while(p!=NULL)这是什么意思?

柒兲 发表于 2007-11-4 19:27

<BR>你这个算法有问题啊` `

柒兲 发表于 2007-11-4 19:29

tran()<BR>你在把这个函数改下` 算法有问题!<BR>

zxc1998 发表于 2007-11-4 21:37

按照你的算法,输入时应按照绝对值递增的次序输入,转换时并不是只有负数要执行插入运算,正数也要执行插入运算,而你对正数没作处理。

rayxiang 发表于 2007-11-4 23:14

    有没有哪位告诉我一下<BR>  head=(node*)malloc(sizeof(node));<BR>是什么意思啊...

valentineyzq 发表于 2007-11-5 08:36

回复:(rayxiang) 有没有哪位告诉我一下 head=(...

给head指针动态分配内存空间。

柒兲 发表于 2007-11-5 13:40

[em17][em17][em17]

页: [1]

编程论坛