- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构算法编程实现样例详解
数据结构算法 编程实现样例详解
请仔细阅读,建议打印。注意比较细节的差异,关于指针问题请看 “难点答疑”。
编程步骤 程序结构框架 样例源代码清单(以顺序表插入功能为例) 一:
编写公共头文件 引用的库文件
定义系统常量
建议文件名前加姓名:
sjCommon.h #include stdio.h
#include stdlib.h
#include malloc.h
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0 二:
编写存储结构头文件 定义元素类型
定义结构体
顺序:sjSeqList.h
链式:sjLinList.h 顺序表的结构体 单链表的结构体 #define ElemType int
#define MAXSIZE 10
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList; typedef char ElemType;
typedef struct Node
{
ElemType data;
struct Node * next;
}Node, *LinkList; 标准的线性表、栈、队列、串的存储结构样例 顺序栈的结构体 顺序队列的结构体 #define Stack_Size 50
typedef struct
{
StackElementType elem[Stack_Size];
int top;
}SeqStack; #define MAXSIZE 50
typedef struct
{
QueueElementType element[MAXSIZE];
int front;
int rear;
}SeqQueue; 顺序串的结构体 堆分配存储的串结构体 #define MAXLEN 40
typedef struct
{
char ch[MAXLEN];
int len;
}SString; typedef struct
{
char *ch;
int len;
}HString; 自定义结构体样例 约瑟夫环结构体 城市坐标结构体 typedef struct data{
int num; //用于存放人的序号
int pwd; //用于存放密码
}typedata;
typedef struct node{
typedata data;
struct node *next;
}YSFNode, *YSFLinkList; typedef struct CityNode
{
char name[10];
float x;
float y;
struct CityNode *next;
}CityNode; 三:
编写实现所需功能的主程序 加载头文件 #include sjCommon.h
#include sjSeqList.h 应用教材现有的数据结构算法1:
初始化顺序表 int InitList(SeqList *L,int r) /*顺序表初始化,输入r个元素*/
{
L-last =r-1;
printf(请输入线性表的%d个元素值:\n,r);
for(int i=0; i=L-last; i++)
{
scanf(%d,L-elem[i]);
}
return(OK);
} 应用教材现有的数据结构算法2:
在顺序表L中第i个数据元素之前插入一个元素e int InsList(SeqList *L,int i,ElemType e)
{
int k;
if((i1) || (i L-last+2)) /*首先判断插入位置是否合法*/
{
printf(插入位置i值不合法);
return(ERROR);
}
if(L-last= MAXSIZE-1)
{
printf(表已满无法插入);
return(ERROR);
}
for(k=L-last;k=i-1;k--) /*为插入元素而移动位置*/
L-elem[k+1]=L-elem[k];
L-elem[i-1]=e; /*在C语言数组中,第i个元素的下标为i-1*/
L-last++;
return(OK);
} 编写用户自定义算法:
输出顺序表中的所有元素 int DisplayList(SeqList *L)
{
for(int i=0; iL-last; i++)
{
原创力文档


文档评论(0)