您的位置:首页 > 其它

线性表之顺序表示算法实现(一)

2016-09-27 23:20 232 查看
  为了准备考研,重拾了数据结构的代码学习,看了大量的代码片段之后,我实在是受不了身为程序狗,不敲代码而去手写代码的烦躁,于是还是将今天晚上的学习内容敲在了编译器里面,重拾对代码最初的热爱。

  严蔚敏版本的数据结构不愧为数据结构中的典范,我真的很是建议从严的书入手,辅以王道或者天勤。当然,我是不建议天勤的,极其的没有专业性,难怪号称出自学生之手。

  不多说了,今天时间紧,只是测试书中算法2.3和算法2.4。加之一些可以进行测试的必要性补充,如下

#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define INCREASMENT 10
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;

int InitList_Sq(SqList &L)
{ // 初始化顺序表 算法2.3
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)return 0;
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return 1;
}

void CreatList(SqList &L,int length)
{ // 创建 顺序表
int i;
L.length = length;
printf("请输入创建的顺序表:");
for(i=0;i<length;i++){
scanf("%d",&L.elem[i]);
}
}

int Insert(SqList &L,int i,ElemType e)
{// 插入算法 算法2.4
ElemType *newbase,*p,*q;
if(i<1||i>L.length+1)return 0;
if(L.length>=L.listsize){
newbase = (ElemType *)realloc(L.elem,(L.listsize+INCREASMENT)*sizeof(ElemType));
if(!newbase)return 0;
L.elem = newbase;
L.listsize+=INCREASMENT;
}
q = &(L.elem[i-1]);
for(p = &(L.elem[L.length-1]);p>=q;--p)
*(p+1) = *p;
*q=e;
++L.length;
return 1;
}

void PrintList(SqList L)
{//打印 顺序表
int i;
printf("顺序表为 :(");
for(i=0;i<L.length-1;i++){
printf("%d,",L.elem[i]);
}
printf("%d)\n",L.elem[L.length-1]);
}

int main()
{
SqList L;
InitList_Sq(L); // 初始化
CreatList(L,10); // 创建s
PrintList(L);
Insert(L,2,20);
PrintList(L);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: