登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

明月凉

再不记录,就忘了

 
 
 

日志

 
 

C_数据结构-线性表_顺序表  

2011-09-25 22:19:10|  分类: 计算机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

教材是朱站立的

1,顺序表

实现顺序存储当然是用数组了

为了方便修改和阅读,将表的声明和方法实现都放在 .h 文件中,在.c 文件中 include进来就行了

当然方法只写了一部分常用到的

SeqList.h

//结构体声明,MaxSize在使用时指定,size表示当前数组元素个数

typedef struct
{
 DataType list[MaxSize];
 int size;
}SeqList;

//初始化,我们在应用时,会新建一个SeqList的结构体,然后传它的地址到这个函数

void ListInitiate(SeqList* L)
{
 L->size=0;
}

//得到元素个数

int ListLength(SeqList L)
{
 return L.size;
}

//插入元素

int ListInsert(SeqList* L,int i,DataType x)
{
 int j;
 if(L->size>=MaxSize)                     //因为是数组,我们是不能让它插到数组外面去的
 { 
 printf("顺序表已满,无法插入!\n");
 return 0;
 }
else if(i<0||i>L->size)//
{
 printf("参数i不合法!\n");
 return 0;
}
else
{                                    //让插入点之后的所有元素都向后移一个位置
 for(j=L->size;j>i;j--)
 L->list[j]=L->list[j-1];

//在list[i]这里插入x
 L->list[i]=x;
 L->size++;                    //元素个数加1
 return 1;
}
}

//删除元素,指针x来保存删除的这个元素

int ListDelete(SeqList* L,int i,DataType *x)
{
int j;
if(L->size<=0)
{
printf("表已经空,没有元素可删除!\n");
return 0;
}
else if(i<0||i>=L->size-1)       //因为下标是从0开始的,所以最后一个元素下标是size-1
{
printf("参数i不合法!\n");
return 0;
}
else
{
*x=L->list[i];                  //   *x   暂存list[i]的值,这里好像没必要了哈,但是有时候可以返回这个值撒
for(j=i+1;j<L->size;j++)                   // list[j] 和它后面的元素都向前面移一格
 L->list[j-1]=L->list[j];
L->size--;
return 1;
}
}

//读取数据元素

int ListGet(SeqList L,int i,DataType *x)
{
if(i<0||i>L.size-1)
{
printf("参数i不合法!");
return 0;
}
else
{
*x=L.list[i];                  // *x   用来存它
return 1;
}
}

 

然后就是主函数了

sxList.x

#include <stdio.h>
#define MaxSize 100           //这里,一定在把这两句放在include "SeqList.h"的前面,不然它就不知道MaxSize
typedef int DataType;         //和DataType到底是个什么东西
#include "SeqList.h"

void main(void)
{
 SeqList myList;                 //声明一个SeqList型的myList
 int i,x;

ListInitiate(& myList);              //初始化myList,对myList操作,要传址

for(i=0;i<10;i++)
{
if(ListInsert(&myList,i,i+1)==0)           //这种方法!!每次调用都进行错误判断,很好
 {
 printf("error!\n");
 return;
 }
}
if(ListDelete(&myList,4,&x)==0)
 {
 printf("error!\n");
 return;
 }
for(i=0;i<ListLength(myList);i++)
{
 if(ListGet(myList,i,&x)==0)
 {
 printf("error!\n");
 return;
 }
 else
 printf("%d    ",x);       // x是个全局的,上面给它值后,运行到这里这会输出,然后继续循环
}
}

C_数据结构-线性表 - 某丶丶人 - 某丶丶人
  评论这张
 
阅读(106)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018