问题描述: 
给定一个整数序列: 
56, 45, 32, 83,43,…. 
每个整数作为链表中的一个节点,构造一个从小到大排序的链表。 
   对于给定的整数 80,返回该整数是否在链表中。 
提示: 
   需要实现以下功能: 
1.链表的构造 
2.链表的插入 
3.链表的查找 
4.链表空间的释放。 
 #include <stdio.h>
#include <stdlib.h>typedef  int  elemtype;
typedef  struct  lnode{
elemtype data; 
struct lnode *next;
}List;
main()
{List *p,*s,*t;
t=(List*)malloc(sizeof (List));
p=(List*)malloc(sizeof (List));
scanf(“%d”,&p->data);
s=(List*)*malloc(sizeof (List));
While(1)
scanf(“%d”,&s->data);
s-next=Null;
If ((s->data)<(p->data))
{s-next=p;
t=p;
p=s;
t=s;
}
else {
t=p;
if  p->next=!Null
{
while((s->data)>(p->next->data))
{p=p->next;} s-next=p-next;
p-next=s;
p=t;}
else
p-next=s;
}

解决方案 »

  1.   

    typedef struct _ListTypeStr
    {
    INT Value;
    _ListTypeStr *Next;
    }_ListType;_ListType *ListHeader=NULL;/**添加链表项**/
    void List_Add(INT Value)
    {
    if(ListHeader==NULL)
    {
    ListHeader=(_ListType *)malloc(size(_ListType));
    ListHeader.Value=Value;
    ListHeader.Next=NULL;
    }
    else
    {
    _ListType * Temp;
    Temp=ListHeader.Next;
    while(Temp!=NULL)
    {
    Temp=Temp.Next;
    }
    Temp=(_ListType *)malloc(size(_ListType));
    Temp.Value=Value;
    Temp.Next=NULL;}
    }/**创建链表**/
    void List_Creat(void)
    {
    INT StarValue[NUM]={56, 45, 32, 83,43,...};
    INT Index;
    /**对StarValue进行排序(略)**/
    for(Index=0;Index<sizeof(StarValue)/sizeof(StarValue[0]);Index++)
    {
    List_Add(StarValue[Index]);
    }
    }/**暂停,肚子饿了去吃晚饿先**/