关闭

数据结构

标签: 数据结构structmatrix算法null
125人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8150次
    • 积分:181
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档
    最新评论