链表的操作
<P>设有一个线性单链表,其结点值均为整数(正整数,0,负整数),且按绝对值从小到大链接。试写出一个算法,将此线性单链表中的结点按值从小到大链接。<BR>上述是题目:下面是代码可是运行不对请各位指教<BR>#include<stdio.h><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",&a);<BR>p=(node*)malloc(sizeof(node));<BR>p->data=a;<BR>q->next=p;<BR>q=p;</P><P>}<BR>q->next=NULL;<BR>return (head);<BR>}<BR>node *tran(node *head)<BR>{<BR>node *p,*q,*r;<BR>p=head->next;<BR>q=p->next;</P>
<P>while(p!=NULL)<BR>{r=q->next;<BR>if(q->data<0)<BR>{<BR>p->next=r;<BR>q->next=p;<BR>p=q;<BR>q=r;<BR>}<BR>else<BR>p=p->next;<BR>}<BR>head->next=p;<BR>return(head);<BR>}<BR>main()<BR>{<BR>node *p,*q;<BR>p=create();<BR>q=tran(p);<BR>q=q->next;<BR>while(q!=NULL)<BR>{<BR>printf("%d",q->data);<BR>q=q->next;<BR>}<BR>getch();<BR>}</P>
回复:(yjdgv)链表的操作
还是不行啊请帮看看是不是定义函数的问题啊<br> while(ch!='?')<BR>while(p!=NULL)这是什么意思? <BR>你这个算法有问题啊` ` tran()<BR>你在把这个函数改下` 算法有问题!<BR> 按照你的算法,输入时应按照绝对值递增的次序输入,转换时并不是只有负数要执行插入运算,正数也要执行插入运算,而你对正数没作处理。 有没有哪位告诉我一下<BR> head=(node*)malloc(sizeof(node));<BR>是什么意思啊...回复:(rayxiang) 有没有哪位告诉我一下 head=(...
给head指针动态分配内存空间。 [em17][em17][em17]页:
[1]
