第三周-项目1 - 顺序表的基本运算
来源:互联网 发布:单片机与串口调试助手 编辑:程序博客网 时间:2024/05/20 17:59
#include <stdio.h>//必要的库文件包括#include <malloc.h>#define MaxSize 50 //必要的宏定义 //声明实现算法的自定义函数,以及其他必要的自定义函数typedef int ElemType;//将ElemType定义为int类型typedef struct//用来存储顺序表的结构体Sq{ElemType data[MaxSize];//定义一个数组用来存储,int型int length;//顺序表的长度}SqList;bool ListEmpty(SqList *L);//———————————————判断线性表是否为空ListEmptyvoid DispList(SqList *&L);//———————————————输出线性表DispListvoid CreateList(SqList *&L,ElemType a[],int n);//———— 1.建立线性表CreateListvoid InitList(SqList * &L);//—————————————— 2.初始化线性表InitListvoid DestroyList(SqList * &L);//—————————————3.销毁线性表DestroyListbool ListInsert(SqList *&L,int i,ElemType &e);//—————4.插入数据元素ListInsertbool ListDelete(SqList *&L,int i,ElemType &e);//—————5.删除数据元素ListDeleteint ListLength(SqList *&L);//—————————————— 6.求线性表的长度ListLength的bool GetElem(SqList *&L,int i,ElemType &e);//—————— 7.求线性表L中指定位置(e)的某个数据元素GetElemint LocateElem(SqList *&L,ElemType e);//—————————8.查找元素LocateElem//定义用于驱动测试的main函数int main(){int i;ElemType e;SqList *sq;//定义一顺序表,结构体ElemType x[6]={1,2,3,4,5,6};//定义一个数组并赋值//1. CreateList(sq, x, 6);//调用“建立线性表” DispList(sq);//调用“输出线性表”ListEmpty(sq);//判断线性表是否为空//2.InitList(sq);//初始化线性表DispList(sq);//调用“输出线性表”//3.CreateList(sq, x, 6);//调用“建立线性表”DestroyList(sq);//销毁线性表DispList(sq);//调用“输出线性表”//4.i=2;e=5;CreateList(sq, x, 6);//调用“建立线性表”ListInsert(sq,i,e);//插入数据元素DispList(sq);//调用“输出线性表”//5.ListDelete(sq,i,e);//删除数据元素DispList(sq);//调用“输出线性表”//6.int l;l=ListLength(sq);//求线性表的长度printf("%d ",l);printf("\n");//7.int n;GetElem(sq,i,n);//求线性表L中指定位置(e)的某个数据元素printf("%d ",n);printf("\n");//8.int m;m=LocateElem(sq,e);//查找元素printf("%d ",m);printf("\n"); return 0;}//定义各个自定义函数void CreateList(SqList *&L,ElemType a[],int n)//————————1.“建立线性表”的算法CreateList{int i;L=(SqList *)malloc(sizeof(SqList));//分配空间for(i=0;i<n;i++)//把数组的值赋予线性表L->data[i]=a[i];L->length=n;//赋予表长}bool ListEmpty(SqList *L)//——————————实现判断线性表是否为空的算法ListEmpty{if(L->length==0){printf("线性表为空\n");return true;}else return false;}void DispList(SqList *&L)//——————————实现“输出线性表”的算法DispList{int i;if(ListEmpty(L))//判断是不是空表return;for (i=0; i<L->length; i++) //输出 printf("%d ",L->data[i]); printf("\n"); //换行}void InitList(SqList * &L)//————————————2.初始化线性表InitList{L=(SqList *)malloc(sizeof(SqList));L->length=0;}void DestroyList(SqList * &L)//————————————3.销毁线性表DestroyList{free(L);}bool ListInsert(SqList *&L,int i,ElemType &e)//————————————4.插入数据元素ListInsert{if(i<1||i>L->length)return false;i--;for(int j=L->length;j>i;j--){L->data[j]=L->data[j-1];}L->length++;L->data[i]=e;return true;}bool ListDelete(SqList *&L,int i,ElemType &e)//————————————5.删除数据元素ListDelete{if(i<1||i>L->length)return false;i--;e=L->data[i];for(int j=i;j<L->length-1;j++)L->data[j]=L->data[j+1];L->length--;return true;}int ListLength(SqList *&L)//————————————6.增加求线性表的长度ListLength的函数{return(L->length);}bool GetElem(SqList *&L,int i,ElemType &e)//————————————7.增加求线性表L中指定位置(e)的某个数据元素GetElem的函数{if(i<1||i>L->length)return false;e=L->data[i-1];return true;}int LocateElem(SqList *&L,ElemType e)//————————————8.增加查找元素LocateElem的函数{int i=0;while(i<L->length&&L->data[i]!=e)i++;if(i>=L->length)return 0;elsereturn i+1;}
小结:从运行结果来看,第一行成功的建立了一个顺序表,并进行了输出。第二行对已经行初始化的顺序表进行输出,在判断线性表是否为空的函数中加入了如果为空则输出“线性表为空”的指令,所以第二行的输出证明初始化也是成功的。第三行进行了销毁线性表的操作,从结果什么都没有来看,销毁和初始化是并不一样的。第四行进行了插入操作,在第二的位置插入一个5。第五行则是删除上一步增加的5。倒数第三行输出的6为线性表长度,倒数第二行为查看第二个位置上的元素(其中用到了引用作为形参),最后一行为查找5在第几个位置(直接返回值)。各种操作均有非常巧妙的地方。
0 0
- 第三周项目1-顺序表的基本运算
- 第三周项目(1):顺序表的基本运算
- 第三周实践项目1-顺序表的基本运算
- 第三周—项目1 顺序表的基本运算
- 第三周 项目1 - 顺序表的基本运算
- 第三周项目1顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- (第三周项目1)顺序表的基本运算
- 第三周项目1 顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1 顺序表的基本运算(2)
- 第三周【项目1 - 顺序表的基本运算】
- 第三周 项目1-顺序表的基本运算
- 第三周项目1顺序表的基本运算2
- 第三周项目1-顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- 第十三周项目1最小生成树的普里姆算法
- LeetCode 107 Binary Tree Level Order Traversal II
- windows xp 安装配置Apache+subversion+tortoise
- iOS开发教程:Storyboard全解析
- 第十三周项目1-Prim算法的验证
- 第三周-项目1 - 顺序表的基本运算
- 第十一周 项目1-3 中序线索化二叉树的算法验证
- JavaScript学习(5.2):声明语句
- 第13周SHH数据结构-【项目1-Prim算法的验证 】
- 用tirgger实现主键自增(trigger+sequence)
- 第十二周项目1-图基本算法库
- Apache配置
- web应用接口开发参数签名方式(一)
- 正则表达式中的g,i,m修饰符