您的位置:首页 > 其它

程序小白天天打卡

2018-01-22 21:21 260 查看
2018/1/22数据结构1.线性表(顺序)/*以数组为蓝本*/(注:看到一些方法采用指针和->或者用.来引用线性表中的内容,这其实是两种方法,都可以采用,并不矛盾)1*以前总以为线性表的操作方法是一套固定的方式,几天后才发现线性表的操作方法名是随机定的,只不过方法的名称是约定俗成的(这玩意真的忽悠了我好久),关键的是内部的操作方法。2.简单操作方法*1.关于线性表的声明:线性表的建立需要定义一些是非值,重定义元素类型(ElemType)和Status(应该是为了修改的方便),同样的重命名整个结构体,结构体中要包括线性表的长度(length)和最大长度data[Maxsize]#include <stdio.h>#include<stdlib.h>#define Maxsize 20//定义线性表的最大长度#define TRUE 1#define ERROR -1#define FALSE 0#define OK 1/*便于对线性表中的数据进行修改*/typedef int Status;//对整个线性表数据类型的阐述typedef int ElemType;//线性表中元素的数据类型typedef struct /*定义一个结构体数据类型*/{int length;//长度Status data[Maxsize];//定义数组}sqlist1;*2:关于线性表的初始化:就是把线性表的长度变为0/*1.对线性表进行初始化*/Status initlist(sqlist1 *L) //传递指针{L->length = 0;//对线性表初始化,就是把线性表的长度变为0return OK;}*3创建一个新的线性表:采用for循环来对线性表的各个位置进行赋值,从而达到对线性表初始化的效果,注意要对线性表的长度进行赋值
 Status createlist(sqlist1 *L) {int i;int m;printf("请输入线性表中的内容");for (i = 0; i < 10; i++){scanf_s("%d", &m);//对线性表中的数据进行操作L->data[i] = m;}L->length = 10;return OK;}
*4返回线性表的长度:return,*5判断线性表是否为空:返回是非值/*返回线性表的长度*/int getlengthsqlist(sqlist1 L){return L.length;//直接返回线性表的长度}/*判断线性表是否为空,为空则返回TRUE,不为空范围FALSE*/Status listEmpty(sqlist1 L){if (L.length == 0){return TRUE;}return FALSE;}*6 遍历线性表:采用for循环来遍历线性表
//遍历线性表Status listTraverse(sqlist1 L) {int i;
Status getElem(sqlist1 L, int i, ElemType *e)//用e来返回线性表第i个位置的值{if (  i>L.length||i<1)//表示一些不正常的情况{printf("查找的位置错误");return ERROR;}*e = L.data[i - 1];return OK;}
*7查找线性表中的元素:注意查找元素要处理一些特殊情况,使算法更加健全Status getElem(sqlist1 L, int i, ElemType *e)//用e来返回线性表第i个位置的值{if (  i>L.length||i<1)//表示一些不正常的情况{printf("查找的位置错误");return ERROR;}*e = L.data[i - 1];return OK;}*8清空线性表:把线性表的所有数变为0(其实线性表的清空并不是把线性表的数据删除,而是全部变为0)/*清空线性表*/void clearlist(sqlist1 *L){int i;for (i = 0; i < Maxsize; i++){L->data[i] = 0;printf("%d", L->data[i]);}}还有一些方法明天更新9*记得一开始理解线性表的使用时,以为线性表的使用是基于数组的,但是,其实线性表的使用时以数组为蓝本的吗,所以就是定义一些变量,对上述方法的使用而已,和数组没有一毛钱关系;void main(){sqlist1 L;//创建一个名为L的线性表int input_number;//等待插入的线性表中的位置int input_value;//等待插入的数据ElemType e;createlist(&L);listTraverse(L);printf("请输入要查找的位置:");scanf_s("%d", &input_number);printf("\n");getElem(L, input_number, &input_value);listTraverse(L);printf("第%d个元素的值为:%d\n", input_number, input_value);clearlist(&L);system("pause");}
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: