字符数组的冒泡排序+ 动态顺序存储线性表的基本实现

/*

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\n",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\n",c->data);
    }
}

int main(void)
{
    LinkList L1;
    Init(&L1);
    ListInsert(L1);
    //OutPut(L1);
    Sort(L1);
    //system("pause");
    return 0;
}
posted on 2019-10-30 21:07  redOrange01  阅读(252)  评论(0编辑  收藏  举报