求数据结构链表完整程序!送积分300积分

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:52:05
已知一个双向链表,从第二个元素开始已经呈递增有序,请编写一个算法把第一个元素删除且插入到适当位置,结果链表仍然有序(设表无头结点)
主要是定义一个双向链表,随意输入几个数字,把第一个数字插进去,条件的是呈递增有序,把第一个元素删除!
第一个完整可运行程序,追加奖励积分,因为一次只能输入100分

#include <stdio.h>
#include <conio.h>
#define len sizeof( node )

typedef struct Node
{
float k;
struct Node *head;
struct Node *next;
}node;

node *creatlist() /* Head 变量不是头结点,是用来标记第一个结点的位置 */
{
float data;
node *p,*q,*Head;
char c;
printf("input the first number at discretion,and then input other which is increased:\n");
scanf("%f%c",&data,&c);
p=(node*)malloc( len );
Head=p;
p->k=data;
while( c!='\n' )
{
scanf("%f%c",&data,&c); /* 输入数据 */
q=(node*)malloc( len );
q->k=data;
/* 构建双向链表 */
p->next=q;
q->head=p;
q->next=NULL;
p=q;
}
return Head;
}

node *treat( node *Head ) /* 插入时分三种情况,在前面,中间,最后,仔细看好了 */
{
node *p,*q;
float temp;/* 用于储存中间变量,用来转换 */
if( (Head->next)->k >= Head->k )