线性表之顺序表示算法实现(一)
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;
}
严蔚敏版本的数据结构不愧为数据结构中的典范,我真的很是建议从严的书入手,辅以王道或者天勤。当然,我是不建议天勤的,极其的没有专业性,难怪号称出自学生之手。
不多说了,今天时间紧,只是测试书中算法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;
}
相关文章推荐
- 线性表的顺序表示和实现<算法2.1-2.7>
- 线性表的顺序表示和实现(C语言描述)
- 严蔚敏--线性表的顺序表示和实现 代码
- 数据结构与算法——线性表的顺序表示
- 线性表的顺序表示和实现 - 数据结构
- 线性表的顺序表示和实现
- 线性表之顺序表示及实现
- 线性表【02】线性表的顺序表示与实现 推荐
- 实验一 线性表的顺序表示与实现
- 线性表的顺序表示和实现 - 数据结构
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示与实现
- 数据结构之:线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示与实现
- 线性表的顺序表示实现-C++版
- 线性表的顺序表 实现,及应用-----西文排序+前m个元素和后n个元素进行整体互换+构造纯集合+有序表求纯集合+循环有序链表表示两集合的并集