zoukankan      html  css  js  c++  java
  • 字符数组的冒泡排序+ 动态顺序存储线性表的基本实现

    /*

    void Sort(LinkList L)
    {
        LNode *q,*p,*c;
        p=L->next;
        q=L;
        char cnt;
        while(p!=NULL)
        {
            while(p->next!=NULL)
            {
                if(p->data > p->next->data)
                {
                    cnt=p->data;
                    p->data=p->next->data;
                    p->next->data=cnt;
                }
                p=p->next;
            }
            p=q->next;
            q=p;
        }
        
        for(c=L->next;c;c=c->next)
        {
            printf("%c ",c->data);
        }
    }

    */

    /* 例题

    2_2 动态顺序存储线性表的基本实现

    任务描述:

    根据给出的存储结构,完成现在下列函数功能,并按照主函数的代码,输出规定的效果。

    预定义常量和类型:

    #define LIST_INIT_SIZE 100
    #define LISTINCREMENT 10
    #define Status int
    #define OVERFLOW -1
    #define OK 1
    #define ERROR 0
    #define ElemType int

    存储结构:

    typedef struct
    {
           ElemType * elem;
           int length;
           int listsize;
    }SqList;
    
    

    函数操作:

    打印:voidListPrint_Sq(SqListL)

    分类:void PartList(SqList *La)

    注意:

           输出打印(ListPrint_Sq)是指将表中数据元素打印出来;

           分类(PartList)是在线性表L中将正数和负数分开,正数在前,负数在后,0在中间,正数的相对位置保持不变,负数的相对位置也保持不变

    主函数如下:

    int main(void)
    {
        SqList L;
        int i=0;
        ElemType e;
        ElemType data[9] = {10,263,-32,-3,-25,88,77,0,-9};
        InitList_Sq(&L);
        for(i = 0;i < 9; i++)
           ListInsert_Sq(&L,i+1,data[i]);
    
        printf("插入完成后 L = : ");
        ListPrint_Sq(L);
        PartList(&L);
        printf("元素分类后的线性表:");
        ListPrint_Sq(L);
        system("pause");
        return 0;
    }

    */

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>

    #define OK 1
    #define ERROR 0

    typedef int Status;
    typedef char ElemType;

    typedef struct Node
    {
        ElemType data;
        struct Node * next; 
    }LNode,*LinkList;

    Status Init(LinkList *L)
    {
        LNode *newNode=(LNode *)malloc(sizeof(LNode));
        newNode->next=NULL;
        L=newNode;
        return L; 
    void ListInsert(LinkList L)
    {
        char str[]={'s','o','f','t','w','a','r','e'};
        
        //L->next=newNode;
        LNode* tail=L;
        int i;
        for(i=0;str[i]!=NULL;i++)
        {
            LNode *Lnew=(LNode *)malloc(sizeof(LNode));
            Lnew->data=str[i];
            Lnew->next=NULL;
            tail->next=Lnew;
            tail=Lnew;
        }
    }
    void Sort(LinkList L)
    {
        LNode *q,*p,*c;
        p=L->next;
        q=L;
        char cnt;
        while(p!=NULL)
        {
            while(p->next!=NULL)
            {
                if(p->data > p->next->data)
                {
                    cnt=p->data;
                    p->data=p->next->data;
                    p->next->data=cnt;
                }
                p=p->next;
            }
            p=q->next;
            q=p;
        }
        
        for(c=L->next;c;c=c->next)
        {
            printf("%c ",c->data);
        }
    }

    int main(void)
    {
        LinkList L1;
        Init(&L1);
        ListInsert(L1);
        //OutPut(L1);
        Sort(L1);
        //system("pause");
        return 0;
    }
  • 相关阅读:
    IOS总结_无需自己定义UITabbar也可改变UITabbarController的背景和点击和的颜色
    破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV
    HDUJ 2074 叠筐 模拟
    CSRF——攻击与防御
    Ant命令行操作
    C#软件开发实例.私人订制自己的屏幕截图工具(七)加入放大镜的功能
    qemu-kvm-1.1.0源代码中关于迁移的代码分析
    FileSystemWatcher使用方法具体解释
    configure交叉编译
    海量图片存储策略
  • 原文地址:https://www.cnblogs.com/lijianmin6/p/11767940.html
Copyright © 2011-2022 走看看