完成时间:2017年5月7日
代码:
/* 问题描述:使用顺序表完成相关操作 作者;何知令 完成时间:2017年5月7日 */ #include <stdio.h> #include <stdlib.h> #define MaxSize 15 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int length; } SqList; SqList * InitList()//初始化线性表 { SqList *L=(SqList*)malloc(sizeof(SqList)); L->length=0; return L; } void CreateList(SqList *L,ElemType a[],int n)//创建顺序表且往其中输入数据 { int i; for(i=0; i<n; i++) L->data[i]=a[i]; L->length=n; } void DispList(SqList *L)//输出线性表 { int i; for(i=0; i<L->length; i++) printf("%c ",L->data[i]); printf("\n"); } int Length(SqList *L)//返回顺序表长度 { return(L->length); } char place_data(SqList *L,int n)//返回顺序表中某位置上的数据 { return L->data[n-1]; } int data_place(SqList *L,char e)//返回数据在顺序表中的位置 { int i; for(i=0;i<L->length;i++) { if(L->data[i]==e) return i+1; } return 0; } void input(SqList *L,int n,char e)//往顺序表的第n个位置插入元素 { int i; char t; for(i=L->length;i>n-2;i--) { t=L->data[i]; L->data[i+1]=L->data[i]; L->data[i+1]=t; } L->length++; L->data[i+1]=e; } void delete_data(SqList *L,int n)//删除顺序表上的第n个元素 { int i; for(i=n-1;i<L->length;i++) { L->data[i]=L->data[i+1]; } } void DestroyList(SqList *L) { free(L); } int main() { SqList *L= InitList(); char str[MaxSize]= {'a','b','c','d','e'}; char e='a'; printf("顺序表的基本运算如下:\n"); printf("初始化顺序表L\n"); printf("依次采用尾插法插入a,b,c,d,e元素\n"); CreateList(L,str,5); printf("输出顺序表:"); DispList(L); printf("顺序表的长度为%d\n",Length(L)); printf("顺序表L"); if(Length(L)==0) printf("为空\n"); else printf("不为空\n"); printf("顺序表第3个元素=%c\n",place_data(L,3)); printf("元素a的位置=%d\n",data_place(L,e)); printf("在第4个位置上插入元素f\n"); e='f'; input(L,4,e); printf("输出顺序表L:"); DispList(L); printf("删除顺序表中的第3个元素\n"); delete_data(L,3); printf("输出顺序表:"); DispList(L); printf("释放顺序表\n"); return 0; } 程序运行结果展示:知识点总结:顺序表及其相关知识
学习心得:期间开始时顺序表的创建都出问题,说明在数据结构上花的时间远远不足
