数据结构

原创 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;

}

nginx数据结构(ngx_str_t)

typedef struct { size_t len; u_char *data; } ngx_str_t; /*通过一个以’\0’结尾的普通字符串str构造一个...
  • had2009
  • had2009
  • 2016年09月29日 17:00
  • 501

数据结构与算法之二分查找法及其变种

前言二分查找算法也被称之为折半查找算法,是一种在查找算法中普遍使用的算法。其算法的基本思想是:在有序表中,取中间的记录作为比较关键字,若给定值与中间记录的关键字相等,则查找成功;若给定的值小于中间记录...

程序设计与数据结构.周立功单片机

  • 2017年12月08日 13:55
  • 25.85MB
  • 下载

数据结构C++单链表冒泡法排序

  • 2017年12月06日 14:22
  • 2KB
  • 下载

数据结构HASH总结一:理论学习篇

数据结构HASH总结一:理论学习篇  数据结构HASH总结二:程序学习篇 数据结构HASH总结三:实践基础篇 数据结构HASH总结四:程序高级篇 数据结构HASH总结五:Ngi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构
举报原因:
原因补充:

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