| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1848 人关注过本帖
标题:数据结构中线性表的插入!
取消只看楼主 加入收藏
李亚宽
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-2-23
收藏
 问题点数:0 回复次数:5 
数据结构中线性表的插入!
#include<iostream.h>
#define DATATYPE1    int
#define MAXSIZE        100

typedef struct
{
    DATATYPE1 datas[MAXSIZE];
    int last;
    int len;
}SEQUENLIST;

int locate(SEQUENLIST *a, DATATYPE1 x)
{
    int k;
    k=1;
    while(k<=a->last&&a->datas[k-1]!=x)
        k++;
    if(k<=a->last)
        return k;
    else return 0;
}

int insert(SEQUENLIST *a, DATATYPE1 x, int i)
//将新元素x插入到顺序表a的第i个元素的前面
{
int k;
if(i<1||i>a->last||a->last>=MAXSIZE)
return 0;
else
{
    for(k=a->last;k>=i;k--)
        a->datas[k]=a->datas[k-1];
    a->datas[i-1]=x;
    a->last=a->last+1;
    return 1;
}
}

int unit(SEQUENLIST *la, SEQUENLIST *lb)
{
   
    int locate(SEQUENLIST *a, DATATYPE1 x);
    int insert(SEQUENLIST *a, DATATYPE1 x, int i);
    int i;
    for(i=1;i<=lb->last;i++)
        if(!locate(la,lb->datas[i-1]))
            insert(la,lb->datas[i-1],la->last+1);
        return 1;
}


void printSEQUENLIST(SEQUENLIST *a)
{
    int i;
    for(i=0;i<=10;i++)
    {
        cout<<a->datas[i]<<endl;
    }
}


int main()
{
    int i=0;
    SEQUENLIST sd;
    SEQUENLIST sd1;
    SEQUENLIST *t=&sd;
    SEQUENLIST *p=&sd1;
    t->len=8;
    t->last=t->len;
    p->len=8;
    p->last=t->len;

    t->datas[1]=4;
    t->datas[2]=7;
    t->datas[3]=8;
    t->datas[4]=3;
    t->datas[5]=5;

    p->datas[1]=10;
    p->datas[2]=9;
    p->datas[3]=8;
    p->datas[4]=3;
    p->datas[5]=5;

    unit(p,t);
   
   
    printSEQUENLIST(t);
    printSEQUENLIST(p);
    return 0;

}
能运行 可是主函数好像根本没有调用unit函数、、、

[ 本帖最后由 李亚宽 于 2012-3-8 19:25 编辑 ]
搜索更多相关主题的帖子: 数据 include return insert 
2012-03-08 12:14
李亚宽
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-2-23
收藏
得分:0 
回复 2楼 非死亡!
恩 那你看这个吧我又改了一些麻烦您再帮我看看
#include<iostream.h>
#define DATATYPE1    int
#define MAXSIZE        100
#define NULL        0

typedef struct
{
    DATATYPE1 datas[MAXSIZE];
    int last;
    int len;
}SEQUENLIST;

int locate(SEQUENLIST *a, DATATYPE1 x)//顺序表的定位函数
{
    int k;
    k=1;
    while(k<=a->last&&a->datas[k-1]!=x)
        k++;
    if(k<=a->last)
        return k;
    else return 0;
}

int insert(SEQUENLIST *a, DATATYPE1 x, int i)
//将新元素x插入到顺序表a的第i个元素的前面
{
int k;
if(i<1||i>a->last||a->last>=MAXSIZE)
return 0;
else
{
    for(k=a->last;k>=i;k--)
        a->datas[k]=a->datas[k-1];
    a->datas[i-1]=x;
    a->last=a->last+1;
    return 1;
}
}

SEQUENLIST unit(SEQUENLIST la, SEQUENLIST lb)//将所有在顺序表lb中存在而在顺序表la中不存在的数据插入到la表中;
{
   
    int locate(SEQUENLIST *a, DATATYPE1 x);
    int insert(SEQUENLIST *a, DATATYPE1 x, int i);
    int i;
    for(i=1;i<=lb.last;i++)
    {
        if(locate(&la,lb.datas[i-1]))
            break;
        else
        {
            insert(&la,lb.datas[i-1],la.last+1);
        }
        return la;
    }
}


void printSEQUENLIST(SEQUENLIST *a)//输出函数;
{
    int i;
    for(i=0;i<=10;i++)
    {
        cout<<a->datas[i]<<endl;
    }
}


int main()
{
    int i=0;
    SEQUENLIST sd;
    SEQUENLIST sd1;


    sd.datas[1]=4;//初始化的两个线性表;
    sd.datas[2]=7;
    sd.datas[3]=8;
    sd.datas[4]=3;
    sd.datas[5]=5;

    sd1.datas[1]=10;
    sd1.datas[2]=9;
    sd1.datas[3]=8;
    sd1.datas[4]=3;
    sd1.datas[5]=5;

    sd=unit(sd,sd1);
   
   
    printSEQUENLIST(&sd);

    return 0;

}
希望您能帮我分析分析
2012-03-08 13:07
李亚宽
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-2-23
收藏
得分:0 
回复 4楼 雨的帝国
呵呵 谢谢您的回答
首先第一您说的我理解;
第二中首先 你说的locate函数的功能是对的 不过返回的不是真和假而是对象的数据在线性表中的位置 还有那个insert函数
 if(i<1||i>a->last||a->last>=MAXSIZE)
return 0;
else
{
    for(k=a->last;k>=i;k--)
        a->datas[k]=a->datas[k-1];
    a->datas[i-1]=x;
    a->last=a->last+1;
    return 1;
}
中的if后面的条件如果成立返回的是0;如果不成立返回的是else后的语句;
您在好好看看  我们可以交流交流;
2012-03-08 13:57
李亚宽
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-2-23
收藏
得分:0 
回复 7楼 雨的帝国
恩恩 朋友 说的很对 我再好好看看
2012-03-08 18:29
李亚宽
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-2-23
收藏
得分:0 
回复 7楼 雨的帝国
呵呵 谢谢哈 经过你的提示我总算做出来了
我也是c++爱好者 希望以后能多多交流
修改后的:
#include<iostream.h>
#define DATATYPE1    int
#define MAXSIZE        100

typedef struct
{
    DATATYPE1 datas[MAXSIZE];
    int last;
    int len;
}SEQUENLIST;



void init1(SEQUENLIST *l)
{
int i=0;
for(i=0;i<l->len;i++)
{
   l->datas[i]=86+i;
}
}
void init2(SEQUENLIST *l)
{
int i=0;
for(i=0;i<l->len;i++)
{
   l->datas[i]=90+i;
}
}
int locate(SEQUENLIST *a, DATATYPE1 x)
{
    int k;
    k=1;
    while(k<=a->last&&a->datas[k-1]!=x)
        k++;
    if(k<=a->last)
        return k;
    else return 0;
}

int insert(SEQUENLIST *a, DATATYPE1 x, int i)
//将新元素x插入到顺序表a的第i个元素的前面
{
int k;
{
    for(k=a->last;k>=i;k--)
        a->datas[k]=a->datas[k-1];
    a->datas[i-1]=x;
    a->last=a->last+1;
    return 1;
}
}
void unit(SEQUENLIST *la, SEQUENLIST *lb)
{
   
    int locate(SEQUENLIST *a, DATATYPE1 x);
    int insert(SEQUENLIST *a, DATATYPE1 x, int i);
    int i;
    for(i=1;i<=lb->last;i++)
        if(!locate(la,lb->datas[i-1]))
            insert(la,lb->datas[i-1],la->last+1);
}
void printSEQUENLIST(SEQUENLIST *a)
{
    int i;
    for(i=0;i<=11;i++)
    {
        cout<<a->datas[i]<<endl;
    }
}

int main()
{
    int i=0;
    SEQUENLIST sd;
    SEQUENLIST sd1;
    SEQUENLIST *t=&sd;
    SEQUENLIST *p=&sd1;
    t->len=8;
    t->last=t->len;
    p->len=8;
    p->last=t->len;


    init1(p);
    init2(t);
    //insert(t,10,5);
    //insert(p,10,5);

    unit(t,p);
   
   
    printSEQUENLIST(t);
    //printSEQUENLIST(p);
    return 0;

}
2012-03-08 19:00
李亚宽
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-2-23
收藏
得分:0 
回复 10楼 雨的帝国
恩恩  以后有问题多交流交流
2012-03-08 19:23
快速回复:数据结构中线性表的插入!
数据加载中...
 
   



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

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