![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 74
messishow
这个作者很懒,什么都没留下…
展开
-
11 C语言实现约瑟夫问题
编号为1,2,3,…,n的n个人按顺序针方向围坐一张圆桌旁,每个人手中持有一个密码(正整数)。首先输入一个正整数作为报数上限值m,然后,从第一个人开始按顺序针方向自1开始顺序报数,报到m的人离开桌子,并将他手中的密码作为新的m值,从顺序针方向的下一个就坐在桌旁的人开始重新从1报数,如此下去,直至所有人全部离开桌旁为止。 /*首先以m为报数值,数到m的值删除,然后以删除的数值为新的m值,如删除了6转载 2013-04-21 22:26:08 · 742 阅读 · 0 评论 -
001编程实现单链表的建立
/*链表节点的定义*/ typedef struct node { int data; /*节点内容*/ struct node *next; /*下一个节点*/ }node; /*单链表的创建*/ node *create() { int i = 0; /*链表中数据的个数*/ node *head , *p , *q; int x = 0; /*存储数据*/ head转载 2013-04-21 22:07:43 · 609 阅读 · 0 评论 -
10实现有序双向循环链表的插入操作
运行的结果如下所示: /*实现有序双向循环链表的插入操作*/ #include #include typedef struct DbNode { int data; struct DbNode *left; struct DbNode *right; }DbNode; /*根据数据创建节点*/ DbNode *CreateNode(int data) { Db转载 2013-04-21 22:23:54 · 1218 阅读 · 0 评论 -
07单链表的一些基本操作(创建、测量、插入、打印、删除)
结果如下图: 代码如下: #include #include /*1********************************************************************/ /*链表节点的定义*/ typedef struct node { int data; /*节点内容*/ struct node *next; /*下一个节点转载 2013-04-21 22:16:46 · 532 阅读 · 0 评论 -
05编程实现单链表的节点插入
/*单链表pos位置处插入节点,返回链表头指针*/ /*pos从0开始计算,0表示插入到head节点后面*/ node *insert_node(node *head , int pos , int data) { node *item = NULL; node *p; item = (node *)malloc(sizeof(node)); /*新建插入的节点*/ item->da转载 2013-04-21 22:14:40 · 676 阅读 · 0 评论 -
04编程实现单链表的节点查找
/*查找单链表pos位置的节点,返回节点指针*/ /*pos从0开始,0返回head节点*/ node *search_node(node *head , int pos) { node *p = head->next;/*新建节点指针并指向头节点的下个节点*/ if(pos { printf("incorrect position to search node!\n");转载 2013-04-21 22:12:34 · 472 阅读 · 0 评论 -
03打印单链表
/*打印单链表*/ void print(node *head) { node *p; /*新定义一个节点指针*/ int index = 0; /*记录元素号*/ if(head->next == NULL) /*链表为空*/ { printf("Link is empty!\n"); return ; } p = head->next; /*节点指针指向下一个节点*/转载 2013-04-21 22:11:19 · 430 阅读 · 0 评论 -
13数组实现顺序堆栈的基本操作
运行如下所示: /*018数组实现顺序堆栈的基本操作*/ #include #define MaxStackSize 100 typedef int DataType; typedef struct { DataType stack[MaxStackSize]; int top; }SeqStack; /*初始化顺序堆栈S*/ void StackIniti转载 2013-04-21 22:34:59 · 614 阅读 · 0 评论 -
12编程实现队列的入队、出队、测长、打印
运行结果如下所示: /*017编程实现队列的入队、出队、测长、打印*/ #include #include /*队列的实现可以用链表或数组,本例用单链表来实现队列*/ typedef struct _Node { int data; struct _Node *next; /*指向链表下一个指针*/ }node; typedef struct _Que转载 2013-04-21 22:31:41 · 683 阅读 · 0 评论 -
09双向链表的操作
#include #include /*双向链表的定义*/ typedef struct DbNode { int data; /*节点数据*/ DbNode *left; /*前驱节点指针*/ DbNode *right; /*后继节点指针*/ }DbNode; /*根据数据创建节点,返回新创建的节点*/ DbNode *CreateNode(int data) {转载 2013-04-21 22:21:28 · 359 阅读 · 0 评论 -
02编程实现单链表的测长
/*单链表的测长*/ int length(node *head) /*返回单链表长度*/ { int len = 0; node *p; /*新建一个节点指针*/ p = head->next; /*指针指向头节点的下一个节点*/ while(p != NULL) /*遍历链表*/ { len++; p = p->next; } return len; } /*由于链转载 2013-04-21 22:09:59 · 636 阅读 · 0 评论 -
15数组实现顺序堆栈的括号匹配问题
/*假设一个算术表达式包含圆括号、方括号和花括号三种类型的括号, 编写一个函数,用来判别表达式中括号是否正确配对,并设计一个测试主函数*/ 运行结果如下所示: 代码如下所示: #include #include #include #define MaxStackSize 100 /******************************************转载 2013-04-21 22:36:36 · 724 阅读 · 0 评论 -
08单链表的正向排序
运行的结果如下所示: 代码如下所示: #include #include /*单链表的正向排序*/ typedef struct node { int data; struct node *next; }node; node *InsertSort(void) { int data = 0; struct node *head = NULL , *New ,转载 2013-04-21 22:19:27 · 684 阅读 · 0 评论