| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3034 人关注过本帖
标题:线性表的交换
只看楼主 加入收藏
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
线性表的交换
/*
    目的:将线性表(a1,a2,…,am,b1,b2,…,bn)改变成(b1,b2,…,bn,a1,a2,…,am)。
*/
# include <stdio.h>
# include <stdlib.h>
#define LIST_INIT_SIZE 80    // 线性表存储空间的初始分配量
#define LISTINCREMENT 10     // 线性表存储空间的分配增量
typedef char ElemType;

typedef struct
{
    ElemType *elem; // 存储空间基址
    int length;       // 当前长度
    int listsize;      // 当前分配的存储容量
    int incrementsize; // 约定的增补空间量
}SqList;
 // 构造一个空的线性表
void InitList_Sq(SqList &L)
{
     L.elem= (ElemType *) malloc (LIST_INIT_SIZE*sizeof(ElemType));
     if(!L.elem)
         printf("分配失败\n");
     L.length=0;
     L.listsize=LIST_INIT_SIZE;    //已修改
     L.incrementsize = LISTINCREMENT;

}
//初始化线性表
void InputElem_Sq(SqList &L)
{
    int i;
    char ch;

    printf("input a string:\n");
    for(i=0;(i<100)&&((ch=getchar())!=EOF)&&(ch!='\n');i++)
    {
        L.elem[i]=(char)ch;
    }
    L.elem[i]='\0';
    L.length=i;
    printf("input was :%s,    L.length=%d\n",L.elem, L.length);
}
//改变线性表
SqList exchange_1(SqList &La, int m, int n)
{
    SqList Lb;
    int i, j;

    Lb.length = 0;
    for (i=0; i<La.length; i++)
        printf("after exchage :    %c\n", La.elem[i]);
    printf("%d, %d\n", m ,n);
    i=0;j=n;
    while (j<m+n)
    {
        Lb.elem[i] = La.elem[j];    //每次运行到这里程序就终止了,这里有啥问题呀
        ++Lb.length;
        i++; j++;
    }
    i=m;j=0;
    while (j<n)
    {
        Lb.elem[i] = La.elem[j];
        ++Lb.length;
        i++; j++;
    }

    return Lb;
   
}
 
int main()
{
    SqList La, Lb;
    int m, n;
    int i;
    InitList_Sq(La);
    InputElem_Sq(La);
    printf("input m n : ");
    scanf("%d%d", &m, &n);
    Lb = exchange_1(La, m, n);
    for (i=0; i<m+n; i++)
        printf("after exchage :    %c", Lb.elem[i]);

    return 0;
}


[此贴子已经被作者于2016-3-4 19:26编辑过]

搜索更多相关主题的帖子: 空间 线性表 include 
2016-03-04 13:05
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
Lb未初始化

另外你的初始化函数:

程序代码:
// 构造一个空的线性表
void InitList_Sq(SqList &L)
{
    L.elem = (ElemType *) malloc(LIST_INIT_SIZE * sizeof(ElemType));
    if (!L.elem) printf("分配失败\n");
    L.length = 0;
    L.listsize = LIST_INIT_SIZE;  // 初始化空间大小为LIST_INIT_SIZE
    L.incrementsize = LISTINCREMENT;
}



[fly]存在即是合理[/fly]
2016-03-04 15:35
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:0 
回复 2楼 azzbcc
Lb只是新建的线性表,不用初始化
恩恩,线性表大小错了
2016-03-04 19:20
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:0 
终于发现了,是没建立空的线性表Lb
2016-03-04 19:56
快速回复:线性表的交换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041049 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved