数据结构——线性表的建立和有序输出

来源:互联网 发布:linux tcp发送窗口 编辑:程序博客网 时间:2024/06/07 21:30

建立空的线性表;
输入表中的元素;
在输入的过程中将输入的元素依次插入建立好的线性表中;
在插入的过程中排序;
输出已经排序好了的有序线性表;

#include<iostream>#include<stdlib.h># define LIST_INIT_SIZE 100# define LISTINCREMENT 10# define ElemType int# define OVERFLOW -1# define ERROR -1using namespace std;typedef struct {    ElemType *elem;    int length;    int listsize;}SqList;void InitList_Sq(SqList &L){    L.elem = (ElemType * )malloc(LIST_INIT_SIZE*sizeof(ElemType));    if(! L.elem)        exit(OVERFLOW);    L.length = 0;    L.listsize = LIST_INIT_SIZE;}int ListInsert_Sq(SqList &L, int i, ElemType e){    if(i > L.length)    {        cout << "ERROR";        return ERROR;    }    if(L.length >= L.listsize)    {        ElemType *newbase;        newbase = (ElemType *)realloc(L.elem,(L.listsize + LISTINCREMENT) * sizeof(ElemType));        if(!newbase)        exit(OVERFLOW);        L.elem = newbase;        L.listsize += LISTINCREMENT;    }    if(L.length == 0)    {        L.elem[0] = e;        L.length++;        return 1;    }    else    {        ElemType *p, *q;        int wh;        for(wh = 0; wh < L.length; wh++)        {            if( L.elem[wh] > e)                break;        }        q = &L.elem[wh];        for( p = &(L.elem[L.length-1]); p >= q; p--)            *(p+1) = *p;         *q = e;        L.length++;    }}int main (){    SqList L;    InitList_Sq(L);    int e;    int n;    cout << "Please input n:" << endl;    cin >> n;    cout << "Please input elem:" << endl;    for(int i = 0; i < n; i++)    {        cin >> e;        ListInsert_Sq( L, i, e);    }    cout << "Output the SqList:" << endl;    for(int i = 0; i < L.length; i++)        cout << L.elem[i] << " ";    cout << endl;    free(L.elem);    L.elem = NULL;}
0 0
原创粉丝点击