b-rose的博客

梦想没有终点,自信者终将辉煌。

第二次作业(3.数据结构)

这个作业是对上一次作业3的一个补充。单链表的实现在上一个作业3已经给出。


1.循环单链表

循环单链表和单链表差不多,只是将终端结点的指针域由空指针变为指向头结点,而且为了查找开始结点和尾结点的时间复杂度都为O(1),所有在循环列表中一般都由指向终端结点的尾指针来标识循环列表。

増删改查的实现和单链表一样。

2.双向链表

双向链表的结点在单链表的基础上增加了一个指向上一个结点的指针域。

template <class T>

struct DulNode

{

     T data;

     DulNode <T> *prior,* next;

}

双向链表和单链表在求表长,按位置查找,按值查找遍历等操作上的实现都差不多,不同的只是插入和删除操作。

template <class A>

void ListList< A> ::Insert(int i ,A x)

{

    p=first;

    count =0;

    while (p!=NULL&&count<i-1)

    {

        p=p->next;

        count++;

    }

    if(p==NULL)

        throw "位置";

    else

    {

        s=new Node;

        s->prior=p;

        s->next=p->next;

        p->next->prior=s;

        p->next=s;

    }

}


template<class A>

A LinkList<A>::Delete(int i)

{

    p=first;

    count=0;

    while (p!=NULL&&count<i-1)

    {

        p=p->next;

        count++;

    }

    if(p==NULL||p->next==NULL)

        throw"位置";

    else

    {

        (p->prior)->next=p->next;

       (p->next)->prior=p->prior;

       delete q;

       return  x;

    }

}

3.双向循环链表

双向循环链表和双向链表差不多,就是将头指针的prior指针域指向终端结点,将终端结点的next指针域指向头结点。


4.内存对齐

内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。

每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。

规则:
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。
2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。
3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

5.hash散列

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。












阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heizi93/article/details/51289640
文章标签: 数据结构
个人分类: 学习笔记
想对作者说点什么? 我来说一句

B-树的一些基本操作

2015年12月11日 2.53MB 下载

数据结构表达式求值

2013年12月09日 538KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭