- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验1-5答案
数据结构实验
1、设计序链表,要求:
(1)链表的基本操作:初始化、求数据元素个数、插入、删除和取数据元素。(2)设计一个测试主函数,验证链表的正确性。
#includemalloc.h
#includestdio.h
#define ERROR -1
#define OK 1
typedef struct Node
{
char data;
struct Node * next;
}Node, * LinkList;
void InitList(LinkList * L)
{
*L = (LinkList)malloc(sizeof(Node));
(*L)-next = NULL;
}
void CreateFromHead(LinkList L) /*头插法*/
{
Node *s;
char c;
int flag = 1;
printf (输入要插入的结点,输入$结束);
while (flag)
{
c=getchar();
if (c!=$)
{
s=(Node *)malloc(sizeof(Node));
s-data =c;
s-next=L-next;
L-next=s;
}
else flag=0;
}
}
Node *get(LinkList L,int i) /*查找*/
{
int j;
Node *p;
if (i=0) return NULL;
p=L;
j=0;
while ((p-next!=NULL)(ji))
{
p=p-next;
j++;
}
if(i==j) return p;
else return NULL;
}
int ListLength(LinkList L) /*求长度*/
{
Node *p;
int j;
p=L-next;
j=0;
while (p!=NULL)
{
p = p- next;
j++;
}
return j;
}
int DelList(LinkList L,int i,char *e) /*删除*/
{
Node *pre,*r;
int k;
pre=L;
k=0;
while(pre-next!=NULL ki-1)
{
pre = pre - next;
k=k+1;
}
if (!(pre-next))
{
printf(删除结点的位置i不合理!);
return ERROR;
}
r=pre-next;
pre-next=pre-next-next;
e=r-data;
free(r);
return OK;
}
main ()
{
Node *p;
int i;
char * e=0,m=0;
LinkList L;
InitList( L);
CreateFromHead( L);
i=ListLength( L);
printf (输入要删除的结点\n);
scanf (%d,i);
DelList( L, i, e);
printf (输入要提取的结点\n);
scanf (%d,i);
p=get ( L, i);
printf (长度为%d\n,i);
printf (结点=%c,p-data);
}
堆栈设计,要求:
设计顺序堆栈,堆栈的操作包括:初始化,非空否,入栈,取栈顶数据元素。
设计一个主函数对顺序堆栈进行测试。
#includestdio.h
#define M 50
#define FALSE -1
#define TRUE 1
typedef struct stack
{
int elem[M];
int top;
}SeqStack;
void InitStack (SeqStack *s)
{
s- top = -1;
}
int push (SeqStack *s, int x)
{
if (s-top == M-1)
return (FALSE);
s -top++;
s -elem[s-top]=x;
return (TRUE);
}
int GetTop (SeqStack *s, int x)
{
if (s-top==-1)
return (FALSE);
else
{
x = s-elem[s-top];
return (x);
}
}
void main()
{
int m,p;
SeqStack s;
InitStack (s);
printf (输入数据,输入0结束);
while (m)
{
sca
文档评论(0)