请问有强者可以帮我改个程式吗??
问题在于函式dlink createdlist2(dlink head,int value)
内容的部分该怎么改,我才可以在主程式输入Data的时候
链结自动会找到适当的位置
这样只我走链结的时候直接显示大到小或小到大???
#include <stdio.h>
#include <stdlib.h>
struct dlist /* 双向串行结构宣告 */
{
int data; /* 节点资料 */
struct dlist *front; /* 指向下一节点的指标 */
struct dlist *back; /* 指向前一节点的指标 */
};
typedef struct dlist dnode; /* 双向串行新型态 */
typedef dnode *dlink; /* 双向串行指标新型态 */
/* 使用阵列值建立双向链结串行 */
/* 双向链结串行的显示 */
dlink createdlist2(dlink head,int value)
{
dlink new_node;
dlink current;
dlink prev;
prev=head;
if(head==NULL)
{
new_node = ( dlink ) malloc(sizeof(dnode));
new_node->data=value;
new_node->front=new_node;
new_node->back=new_node;
}
else
{
new_node = ( dlink ) malloc(sizeof(dnode));
new_node->data=value;
current=head->front;
while((current!=head) && (current->data>= new_node->data))
{
prev=current;
current=current->front;
}
new_node->front=current;
new_node->back=prev;
prev->front=new_node;
current->back=new_node;
}
return new_node;
}
int main(int argc, char **argv)
{
dlink head=NULL; /* 双向链结串行指标 */
dlink now = NULL;
dlink pre=NULL;
dlink temp=NULL;
dlink now1=NULL;
/* 目前节点指标 */
//int list[10] = {75,98,77,10,57,50,40,81,91,99}; /* 阵列内容 */
//int select; /* 选择项1,2或3 */
//head = createdlist(list,10); /* 建立双向链结串行 */
head=createdlist2(head,50);
now1 = head;
head=createdlist2(head,60);
head=createdlist2(head,40);
head=createdlist2(head,30);
head=createdlist2(head,90);
if ( head == NULL )
{
printf("内存配置失败! \n");
return 0 ;
}
while(now!=NULL)
{
printf("(%d)",now->data);
now=now->front;
}
return 0
}