数据结构

原创 2012年03月26日 20:42:53


顺序表函数接口:

#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;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据结构之二杈树的实现

//头文件BTREE.h #ifndef _BTREE_H_ #define _BTREE_H_ #define true 1 #define false 0 #define BRIGHT 1 #...

数据结构与算法-Java版.pdf

  • 2017-10-09 21:47
  • 1.93MB
  • 下载

数据结构查找之-单链表的基本操作

先给出结构体的定义:#include #include #includetypedef int DataType; typedef struct Node { struct Node* nex...

数据结构-队列

队列概述 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列...

数据结构与算法

  • 2017-09-30 08:34
  • 25.88MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)