注册 登录
编程论坛 数据结构与算法

线性表打印出来

hg654321free 发布于 2013-04-20 19:48, 1088 次点击
/*
** Copyright (C) All rights reserved.
*/
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int ElemType;
typedef int Status;

typedef struct
{
    ElemType data[MAXSIZE];
    int length;      //线性表当前长度
}SqList;

// Status 是函数的类型,其值是函数结果状态代码,如OK等。
// 初始条件:顺序线性表L已存在,1 <= i <= ListLength(L)
// 操作结果:用e返回L中第i个数据元素的值。

Status GetElem(SqList L, int i, ElemType *e)
{
    if( L.length==0 || i<1 || i>L.length )
    {
        return ERROR;
    }
    *e = L.data[i-1];

    return OK;
}

/* 初始条件:顺序线性表L已存在,1<=i<=ListLength(L)。 */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L长度+1。*/

Status ListInsert(SqList *L, int i, ElemType e)
{
    int k;

    if( L->length == MAXSIZE )  // 顺序线性表已经满了
    {
        return ERROR;
    }
    if( i<1 || i>L->length+1)   // 当i不在范围内时
    {
        return ERROR;
    }
    if( i <= L->length )   // 若插入数据位置不在表尾
    {
        /* 将要插入位置后数据元素向后移动一位 */
        for( k=L->length-1; k >= i-1; k-- )
        {
            L->data[k+1] = L->data[k];
        }
    }

    L->data[i-1] = e;  // 将新元素插入
    L->length++;

    return OK;
}

Status ListDelete(SqList *L, int i, ElemType *e)
{
    int k;

    if( L->length == 0)
    {
        return ERROR;
    }
    if( i<1 || i>L->length)
    {
        return ERROR;
    }

    *e = L->data[i-1];

    if( i < L->length)
    {
        for( k=i; k < L->length; k++)
        {
            L->data[k-1] = L->data[k];
        }
    }

    L->length--;

    return OK;
}

L->data[k-1] = L->data[k] 怎么打印出来
5 回复
#2
笑傲2013-04-21 18:18
回复 楼主 hg654321free
随便写的,
void print((SqList *L)
{
    int i;
   for(i = 0 ; i < L->length ; i++)
       printf("%d " , L->data[i]);
}
#3
hg654321free2013-04-21 20:28
回复 2楼 笑傲
还是没显示出来呀?
/*
** Copyright (C) All rights reserved.
*/
#include <stdio.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int ElemType;
typedef int Status;
void print();
typedef struct
{
    ElemType data[MAXSIZE];
    int length;      //线性表当前长度
}SqList;

// Status 是函数的类型,其值是函数结果状态代码,如OK等。
// 初始条件:顺序线性表L已存在,1 <= i <= ListLength(L)
// 操作结果:用e返回L中第i个数据元素的值。

Status GetElem(SqList L, int i, ElemType *e)
{
    if( L.length==0 || i<1 || i>L.length )
    {
        return ERROR;
    }
    *e = L.data[i-1];

    return OK;
}

/* 初始条件:顺序线性表L已存在,1<=i<=ListLength(L)。 */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L长度+1。*/

Status ListInsert(SqList *L, int i, ElemType e)
{
    int k;

    if( L->length == MAXSIZE )  // 顺序线性表已经满了
    {
        return ERROR;
    }
    if( i<1 || i>L->length+1)   // 当i不在范围内时
    {
        return ERROR;
    }
    if( i <= L->length )   // 若插入数据位置不在表尾
    {
        /* 将要插入位置后数据元素向后移动一位 */
        for( k=L->length-1; k >= i-1; k-- )
        {
            L->data[k+1] = L->data[k];
        }
    }

    L->data[i-1] = e;  // 将新元素插入
    L->length++;

    return OK;
}

Status ListDelete(SqList *L, int i, ElemType *e)
{
    int k;

    if( L->length == 0)
    {
        return ERROR;
    }
    if( i<1 || i>L->length)
    {
        return ERROR;
    }

    *e = L->data[i-1];

    if( i < L->length)
    {
        for( k=i; k < L->length; k++)
        {
            L->data[k-1] = L->data[k];
        }
    }

    L->length--;

    return OK;
}

void print(SqList *L)
{
    int i;
   for(i = 0 ; i < L->length ; i++)
       printf("%d " , L->data[i]);
}

int main()
{
    print();
}
#4
笑傲2013-04-21 21:01
回复 3楼 hg654321free
你根本就没有建立线性表怎么可能打印出来
#5
hg654321free2013-04-21 21:05
回复 4楼 笑傲
在哪里建立呀?刚听鱼C数据结构,也不清楚什么是线性表,链接表。就是抄来的代码。
#6
笑傲2013-04-21 22:32
回复 5楼 hg654321free
还是好好看看书吧
1