浅析C语言和Python(5)

引言:今天我们要开展的主题是:列表。这个名词对于有这两门语言基础的同学来说一定是不陌生的,尤记得当初初学的时候,在实验室做实验时,总能听见学长的嘴中总念叨着,链表,树,extend……之类的玄之又玄的东西。而这些就是我们现在要学到的:列表这个大类的知识和内容。今天就让我们在这两门语言中对这个有趣的概念,进行一个简单的比较和使用。

正文:

我们先来看C语言中这一类的知识,既然说到了C语言不得不提的就是另外一门课程:数据结构。这是一门非常深奥的学科,其中涵盖了很多关于思维和认知方面的知识,能够大幅度提升思维和反应能力。其中我认为的最有意思的一章当属于:线性结构;其中包含了:线性表;广义表;多重链表;堆栈和队列等关乎于列表的知识,而今天我我们选取出来要讲的就是当中的堆栈。

堆栈的部分详细操作大家可以关照附表和程序,如下:

类型名称堆栈(Stack)
数据对象集一个有0个或者多个元素的有穷线性表
操作集

对于一个具体长度为正整数的MaxSize的堆栈S\epsilonStack,记堆栈中的任意元素X\epsilonElementType,堆栈的基本操作主要于以下几种:

1、Stack CreatStack(int MaxSize) : 生成空堆栈,其最大长度为MaxSize

2、bool IsFull(Stack S) : 判断堆栈S是否已满。若S中元素个数等于MaxSize时返回true否则返回false

3、bool Push(Stack S,ElementType X): 将元素X压入堆栈。若堆栈已满,返回false,否则将元素X插入堆栈S顶处并返回true。

4、bool IsEmpty(Stack S):判断堆栈S是否为空,若是则返回true;否则返回false

5、ElementType Pop(Stack S):删除并返回栈顶元素。若堆栈为空,返回错误信息;否则将对栈顶元素从堆栈中删除并返回

/*1、用C语言描述顺序栈类型(Stack):*/
typedef int Position;
typedef stuct SNode * PtrToSNode;
struct SNode  {
    ElementType * Data;    //存储元素的数组
    Position Top;        //栈顶指针
    int MaxSize;        //堆栈的最大容量
    } ;
/*2、创建一个给定容量的空栈堆*/
Stack CreatStack(int MaxSize)
{
    Stack S = (Stack)malloc(sizeof(struct SNode));
    S -> Data = (ElementType*)malloc(MaxSize*sizeof(ElementType));
    S -> Top = -1;
    S -> MaxSize = MaxSize;
    return S;
}
/*入栈操作Push*/
bool IsFull(Stack S)
{
    return(S -> Top == S -> MaxSize-1);
}

bool Push(Stack S, ElementType X)
{
    if(IsFull(s)) {
        printf("堆栈满");
        return false;
    }
    else {
            S -> Data[++(S -> Top)] = X;
            return true;
          }
}
/*出栈操作Pop*/
bool IsEmpty(Stack S)
{
    return(S -> Top == -1)
}

    ElementType Pop(Stack S)
{
    if(IsEmpty(S)){
        printf("堆栈空");
       return ERROR; /*ERROR是ElementType的特殊值,标志错误*/
    }
    else
        return(S -> Data[(S -> Top)--]);
}

接下来我们要讲的是Python方面关于这个的知识和内容:

        Python中的列表,相当于C语言中的数组。而他们的相同点就在于:变量存储的是对象的地址。(一个对象包括:地址(id)类型(type)值(value)并且列表中都存储着多个对象的地址。

 Python中列表的特点有以下几点:

1、列表元素按照置入顺序有序排序
2、索引映射唯一一个数据
例子:print(lst[0])
3、列表中可以存储重复数据
4、任意数据类型混合存储
5、根据需要动态分配和回收内存

我们既然要了解列表那么就要知道列表的创建;列表元素的获取;列表的填充和对列表元素的判断

这里我们选取了列表的创建和列表元素的获取来进行进一步讲解,身下的我们会在下一章进行补充说明。

1、列表的创建:

#列表的创建方式:
'''列表的创建方式1:使用[]直接创'''
lst=['hellow','world',98]

'''创建方式2:使用内置函数list'''
lst=list(['hellow','world',98])

2、列表元素的获取:(即index函数的使用)

我们如果要获取列表中的单个元素,那就只有一种办法:使用索引进行查找。
【注:索引分为逆向索引(-N — -1)和正向索引(1 — N-1)。】

index:获取列表中指定的元素的索引(类似于书签)
1、如果查询的列表中含有N个相同的元素,则只会返回相同元素的第一个元素的索引
2、如果查询的元素在列表中不存在,则会返回ValueError
3、还可以在指定的start和stop中进行查找

#例子:
lst=['hello','world',98,'hello']
print(lst,index('hello'))
print(lst,index('hello',1,4))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值