| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include<stdio.h> 
#include<malloc.h> 
#include<stdlib.h> 
 
typedef struct Node 
{ 
        int data; 
        struct Node * Next; 
}NODE,*PNODE; 
 
PNODE create_list(void); 
void trase_list(PNODE); 
int lenght_list(PNODE); 
bool empty_list(PNODE); 
bool insert_list(PNODE,int, int);//PNODE代表的是哪一个链表,int代表要插入的位置,int代表的是插入的值是多少 
bool delete_list(PNODE,int, int *); 
void soert_list(PNODE); 
 
int main(void) 
{ 
        PNODE pHead = NULL; 
        pHead = create_list(); 
        trase_list(pHead); 
        soert_list(pHead); 
        trase_list(pHead); 
        int len = lenght_list(pHead); 
        printf("生成链表的长度为%d\n",len); 
         
         
        soert_list(pHead); 
        trase_list(pHead); 
        //int len = lenght_list(pHead); 
        //printf("链表的长度是%d\n",lenght_list(pHead)); 
#if(0) 
        if(        empty_list(pHead)) 
                printf("链表为空\n"); 
        else 
                printf("链表不空\n"); 
#endif 
        return 0; 
} 
 
PNODE create_list(void) 
{ 
        int len,val,cnt; 
        PNODE pHead = (PNODE)malloc(sizeof(NODE));//创建一个头结点 
        if(NULL==pHead) 
        { 
                printf("内存分配失败,程序终止。"); 
                exit(-1); 
        } 
        PNODE pTail = pHead;//代表了结构体整体赋值 
        pTail->Next = NULL;//pTail代表着指向尾部的指针变量 
         
        printf("请输入您要生成结点的个数:"); 
        scanf("%d",&len); 
        for (cnt=0; cnt<len; cnt++) 
        { 
                printf("请输入第%d个结点的值",cnt+1); 
                scanf("%d",&val); 
                PNODE pNew =(PNODE)malloc(sizeof(NODE)); 
                if (NULL==pNew) 
                { 
                        printf("动态内存分配失败,程序终止。"); 
                        exit(-1); 
                } 
                pNew->data = val; 
                pTail->Next = pNew; 
                pNew->Next = NULL; 
                pTail = pNew;//意思是pTail指向pNew这个节点 
                 
        }                 
        return pHead; 
} 
 
void trase_list(PNODE pHead) 
{ 
        PNODE p = pHead->Next; 
        while(NULL!=p) 
        { 
                printf("%d ",p->data); 
                p = p->Next; 
        } 
        return; 
} 
 
int lenght_list(PNODE pHead) 
{ 
        int cnt = 0; 
        while(NULL!=pHead->Next) 
        { 
                pHead->Next=pHead->Next->Next; 
                cnt++; 
        } 
        return cnt; 
} 
 
bool empty_list(PNODE pHead) 
{ 
        if(NULL==pHead->Next) 
                return true; 
        else  
                return false; 
} 
 
void soert_list(PNODE pHead) 
{ 
        int i, j, t; 
        PNODE p,q; 
        int len = lenght_list(pHead); 
        for( i=0,p=pHead->Next; i<len-1; i++,p = p->Next) 
        { 
                for(j=0,q=p->Next; j<len-i-1;  j++, q=q->Next) 
                { 
                        if(p->data < q->data) 
                        { 
                                t = p->data; 
                                p->data = q->data; 
                                q->data = t; 
                        } 
                } 
        } 
        return; 
} 
 
 |   
 
 
 
 |