关闭

数据结构

标签: 数据结构structmatrix算法null
153人阅读 评论(0) 收藏 举报
分类:


顺序表函数接口:

#define N 10

typedef int datatype;

typedef struct

{

datatype data[N];

int last;

}sqlist;


sqlist *CreateEmptySqlist()


int EmptySqlist(sqlist *L)

判断线性表是否为空,空返回1,不空返回0


int FullSqlist(sqlist *L)

判断线性表是否满,满返回1,线性表不满返回0


void ClearSqlist(sqlist *L)


int InsertSqlist(sqlist *L, datatype x, int pos)

插入元素x操作成功返回0,不成功返回-1


int DeleteSqlist(sqlist *L, int pos)

删除编号为pos的元素成功返回0,删除编号为pos的元素不成功返回-1


Int LengthSqlist(sqlist *L)


链表函数接口:


typedef int datatype;

typedef struct _node_

{

datatype data;

struct _node_ *next;

}linknode, *linklist;


linklist CreateEmptyLinklist()


int EmptyLinklist(linklist h)

判断链表是否为空,空返回1, 不空返回0

int LengthLinklist(linklist h) 求链表的长度


void VisitLinklist(linklist h)

遍历链表

int InsertLinklist_1(linklist h, datatype x, int pos)

将元素x插入到链表的pos位置(插入的结点编号为apos)成功返回0,失败返回-1

void InsertLinklist_2(linklist h, datatype x)

递增有序的链表插入x后依然递增有序

int DeleteLinklist_1(linklist h, int pos)

删除apos结点,成功返回0,失败返回-1

void DeleteLinklist_2(linklist h,datatype x)

删除数据域为x的所有结点

void ClearLinklist(linklist h)

清空链表(只剩头结点)

void ReverseLinklist(linklist h)

链表的反转

 


Int I;

Linklist h;

Linklist p, q; //p表示表尾结点,  q新申请的结点,

H=(linknode *)malloc(sizeof(linknode));

P = h;


For(i=0; i<10; i++)

{

q = (linklist)malloc(sizeof(linknode));

q->data = 10+i;

q->next = NULL;


p->next = q;

p = p->next;//p指向表尾


}


Int LengthLinklist(linklist h)

{

Int count=0;

Linklist p=h->next;


While (p != NULL)

{

Count++;

P = p->next;

}

Return count;

}

1、链表应用:约瑟夫环

2、顺序栈:
#define N  8


typedef int datatype;


typedef struct

{

datatype data[N];

int top;

}sqstack;


sqstack* CreateEmptySqstack()


int EmptySqstack(sqstack *s)


int FullSqstack(sqstack *s)


void ClearSqstack(sqstack *s)


void PushSqstack(sqstack *s, datatype x)


datatype PopSqstack(sqstack *s)


datatype GetTop(sqstack *s)

 

3、链式栈:

typedef int datatype;


typedef struct _node_

{

datatype data;

struct _node_ *next;

}linknode, *linkstack;


linkstack CreateEmptyLinkstack()


int EmptyLinkstack(linkstack h)


void PushLinkstack(linkstack h, datatype x)


datatype PopLinkstack(linkstack h)


datatype GetTop(linkstack h)


void ClearLinkstack(linkstack h)

 

 

4、栈的应用

 

5、顺序队列

#define N 10


typedef int datatype;


typedef struct

{

datatype data[N];

int front, rear;

}sequeue;


sequeue *CreateEmptySequeue()


int EmptySequeue(sequeue *sq)


int FullSequeue(sequeue *sq)


void EnSequeue(sequeue *sq, datatype x)


datatype DeSequeue(sequeue *sq)


void ClearSequeue(sequeue *sq)

 

1、图的遍历

2、dijstra算法
1、在没有找到最短路径的顶点中找到路径最短的顶点
2、对应的标志位置1
3、用该顶点的路径值去检测其他未找到最短路径的顶点

#define N 6

#define M 1<<20


int main()

{

int matrix[N][N] = {{0,  20,  15,  M,  M,  M },

{2,  0,   4,   M,  10, 30},

{M,  M,   0,   M,  M,  10},

{M,  M,   M,   0,  M,  M },

{M,  M,   M,   15, 0,  10},

{M,  M,   M,   4,  M,  0 }};

int s[N] = { 0 };

int dist[N],  startnode=0;

s[startnode] = 1;


int i, count=1;

int min, path;


for(i=0; i<N; i++)

{

dist[i] = matrix[startnode][i];

}


For(I=0; i<N-2; i++) //while(count < N-1)

{

1、


2、


3、

}


return 0;

}


3、排序
#define N 8

void choose(int s[])


void bubble(int s[])


void quick(int s[], int low, int high)


int main()

{

int s[N] = {3, 19, 67, 15, 89, 51, 39, 100};

int i;


//choose(s);

//bubble(s);


quick(s, 0, N-1);

 

return 0;

}

0
0
查看评论

数据结构中的各种查找---总结篇

一、基本概念: 1、  列表:待搜索的数据集合。 2、  关键字:要查找的那个数据。 3、  查找:一种算法过程。 二、基于线性表的查找: 1、  顺序查找: (1)思想:逐个比较,直到找到或者查找失败。 (2)时间复杂度:T(n) = O(n)...
  • Angiexia
  • Angiexia
  • 2014-02-24 14:16
  • 11936

【数据结构】几种常见的排序算法

一、排序算法的分类     下图是我掌握的一些排序算法,我将他们做了分类,当然,排序算法远不止这些。 本篇博客主要记录插入,选择,以及交换排序的冒泡排序,因为快排和归并算法相对复杂,所以,下一篇博客再细细讲述。 二、各种算法的基本思想,分析及其代码实现 1.直接插...
  • pointer_y
  • pointer_y
  • 2016-11-26 23:06
  • 1470

数据结构——简介

数据结构——简介 1、几个基本概念 数据:数据是指计算机接受的输入数据,比如:整型、浮点型等数值类型以及声音、图像、视频等非数值类型的数据数据元素:是组成数据有一定意义的基本单位,比如一个人的基本信息包括姓名、性别、年龄等数据对象:是性质相同的数据元素的集合,比如正整数数据对象N={1,2,...
  • qq_29721419
  • qq_29721419
  • 2017-04-08 10:08
  • 499

数据结构和算法的选择

本部分总结前面介绍的数据结构和算法,并讨论在不同的情况下如何进行选择。 通用数据结构:数组、链表、树、哈希表 专用数据结构:栈、队列、优先级队列 排序:插入排序、希尔排序、快速排序、归并排序、堆排序 图:邻接矩阵、邻接表 外部存储:顺序存储、索引文件、B-树、哈希方法 1 通用数...
  • zhangyuehuan
  • zhangyuehuan
  • 2014-03-28 15:21
  • 18225

数据结构清华大学公开课

有一个月左右的时间看完了这门课的视频,没有跟着学堂在线看,而是自己下载下来,慢慢看。看完后的第一感觉就是清晰,不得不说邓老师真的很用心的在上这门课。   最令我印象深刻是课件的制作,每种数据结构都有对应的动画实例,并有详细的C++代码实现,有的是代码在前,实例在后,有的是实例在前动画...
  • u010009320
  • u010009320
  • 2016-01-07 11:43
  • 1310

数据结构常见面试题

链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。 ...
  • M1011566442
  • M1011566442
  • 2015-06-30 17:13
  • 6547

数据结构全攻略--学好数据结构的必经之路

很多人在学习时一猛子扎进细节里无法自拔,以至于顾此失彼,丢了西瓜捡了芝麻。这种学习方法特别浪费时间,效率也非常低下,以至于在学习的长河中惨遭淘汰。如果这种人继续不思进取,那么在激烈的社会竞争环境中也会惨遭淘汰。 在学习时我们不妨先了解下该门学科所要学习的框架知识,对知识点有初步的全局把控,这...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013-09-16 09:23
  • 21931

再谈数据结构的重要性

那一年, 大二, 老师为了讲数据结构而讲数据结构, 学完了, 我真的是啥也不懂。 根本就不知道这门课有啥用。 后来, 通过自学, 逐渐了解并入门了数据结构, 一个简单的Josephus环让我对数据结构产生了好感。 那数据结构到底有什么用呢? 这就是本文要扯淡的话题。     &#...
  • stpeace
  • stpeace
  • 2015-08-19 19:48
  • 3232

树形菜单的数据结构实现方式

1、引言           树形菜单是WEB应用常见的一种功能导航展现方式,不管树形菜单用什么样的技术去实现,无论如何是跳不出以下两步的:第一、读取菜单数据;第二、展现菜单。实现菜单的展现有很多方式,比如 ...
  • zhimingli7938
  • zhimingli7938
  • 2013-10-10 20:31
  • 2085

数据结构_列表(list)

介绍python数据结构中list的几个常用函数:如排序,增添元素,插值等等 1、选取任意一个或几个元素输出 注:下标从0开始,选取多个元素时,右边是开区间 2、以某一步长对列表进行抽取,重新赋值后形成新的列表 如s [ i : j : k] =
  • u014131641
  • u014131641
  • 2016-08-28 10:44
  • 1001
    个人资料
    • 访问:8999次
    • 积分:160
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档
    最新评论