注册 登录
LUPA开源社区 返回首页

wuting_linux的个人空间 http://www.lupaworld.com/?296848 [收藏] [复制] [分享] [RSS]

我的博客

从基础开始——线性表的操作

已有 15321 次阅读2009-2-27 20:40 |个人分类:基础知识

     早上去听了一下数据结构课,回来就把线性表的操作写了一下,在初始化的时候又在细节上犯错了。把程序放在这里,算是给自己一个提醒。
      线性表的初始化:给结构体赋值,然后将首地址传给指向线性表的指针。指针在没有动态申请(malloc)分配空间之前是没有存储空间的。
    #include <stdlib.h>
#include <stdio.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0

    int i,j,k;
   typedef struct{
    int elem[MAXSIZE];
    int last;
    }SeqList ;
 void  Mergelist(SeqList *La,SeqList *Lb,SeqList *Lc)
    {
    
    while((i<La->last)&&(j<Lb->last)){
        if(La-&gt;elem[i]<=Lb->elem[j]){
           Lc-&gt;elem[k]=La-&gt;elem[i];
           i++;
           k++;
         }else{
        Lc-&gt;elem[k]=Lb-&gt;elem[j];
        j++;
        k++;
        }
   
    }
    while(i<La->last){
    Lc-&gt;elem[k]=La-&gt;elem[i];
    i++;k++;
    }
    while(j<Lb->last){
    Lc-&gt;elem[k]=Lb-&gt;elem[j];
    j++;k++;
    }
    Lc-&gt;last=La-&gt;last+Lb-&gt;last;
   
    }
int Inslist(SeqList *La,int i,int e)
{
    if((i<1)||(i>La-&gt;last+2)) { //check the legality of the locate
      printf("Wrong locate to insert\n");
       return(ERROR);
    }
    if(La-&gt;last&gt;=MAXSIZE-1){
      printf("Tabal is full\n");
      return(ERROR);   
    }
    for(k=La-&gt;last;k&gt;=i-1;k--)
      La-&gt;elem[k+1]=La-&gt;elem[k];
      La-&gt;elem[i-1]=e;
      La-&gt;last++;
      return(OK);
   
}
int DelList(SeqList *Lb,int i,int *e)
{
  
    if((i<1)||(i>Lb-&gt;last+1)){
      printf("Wrong locate to delate\n");
      return(ERROR);
    }
    *e = Lb-&gt;elem[i-1];
    for(k=i;k<Lb->last;k++)
      Lb-&gt;elem[k-1]=Lb-&gt;elem[k];
      Lb-&gt;last --;
      return(OK);
}
int main()
{
    i=0;j=0;k=0;
    SeqList La = {{3,5,8,11},4};
    SeqList Lb = {{2,6,8,9,11,15,20},7};
    SeqList Lc = {{ },20};
    Mergelist(&La,&Lb,&Lc);
      for(i=0;i&lt;Lc.last;i++)
    printf("Lc=%d\n",Lc.elem[i]);
    Inslist(&La,3,6);
     for(i=0;i&lt;La.last;i++)
    printf("La=%d\n",La.elem[i]);
    DelList(&Lb,4,&Lb.elem[3]);
    for(i=0;i&lt;Lb.last;i++)
    printf("Lb=%d\n",Lb.elem[i]);
 
}

发表评论 评论 (1 个评论)

回复 wuting_linux 2009-2-27 21:20
La->elem  怎么发布以后成 La-&gt;      
这是怎么回事呢?
编辑的时候就好好的

facelist

您需要登录后才可以评论 登录 | 注册
验证问答 换一个 验证码 换一个

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号