数据结构 设计一个算法判定一个带头结点的单链表的元素值是否递增的
2个回答
展开全部
既然是数据结构,就写伪代码可以了。
基本思路:从首元(头结点指向的节点)开始,依次查看是此节点的数据否有下一个节点的数据大,如果存在一个节点的数据比下一个节点大,说明不是递增。反之如果考察到最后一个节点之前都比下一个节点小,那么就是递增
如果节点定义如下:
typedef struct LNode{//定义节点类型
ElemType data; //数据域
Struct LNode *next;//指针域
}LNode,*Linklist
算法这样写:
status Judge (Linkedlist l)//表头为l
{int *p,p=l->next;//定义指针变量p,使得p指向首元
if (p-next==NULL||p==NULL) return INFEASIBLE;//如果链表为空,或者仅有一个数据节点,则参数不合法
else {
while (p->next!=NULL&&p->data<p->next-data) p=p->next;//如果p所指的节点的数据小于(如果是非递减就加上等于)p-next所指节点的数据并且p所指的节点不是尾节点,则考察下一个节点,否则终止循环。
if (p-next!=NULL) return NO//如果p节点不是尾节点,说明p节点的数据大于p->next节点数据,即原表中的元素值不是递增
else return YES;//反之,p节点是尾节点则说明所有的节点的数据都比后继节点小,即原表中的元素值递增。
}
}
没有注释的:
status Judge (Linkedlist l)
{int *p,p=l->next;
if (p-next==NULL||p==NULL) return INFEASIBLE;
else {
while (p->next!=NULL&&p->data<p->next-data) p=p->next;
if (p-next!=NULL) return NO
else return YES;
}
}
就这么短。。。不知道上面那哥们怎么做的
基本思路:从首元(头结点指向的节点)开始,依次查看是此节点的数据否有下一个节点的数据大,如果存在一个节点的数据比下一个节点大,说明不是递增。反之如果考察到最后一个节点之前都比下一个节点小,那么就是递增
如果节点定义如下:
typedef struct LNode{//定义节点类型
ElemType data; //数据域
Struct LNode *next;//指针域
}LNode,*Linklist
算法这样写:
status Judge (Linkedlist l)//表头为l
{int *p,p=l->next;//定义指针变量p,使得p指向首元
if (p-next==NULL||p==NULL) return INFEASIBLE;//如果链表为空,或者仅有一个数据节点,则参数不合法
else {
while (p->next!=NULL&&p->data<p->next-data) p=p->next;//如果p所指的节点的数据小于(如果是非递减就加上等于)p-next所指节点的数据并且p所指的节点不是尾节点,则考察下一个节点,否则终止循环。
if (p-next!=NULL) return NO//如果p节点不是尾节点,说明p节点的数据大于p->next节点数据,即原表中的元素值不是递增
else return YES;//反之,p节点是尾节点则说明所有的节点的数据都比后继节点小,即原表中的元素值递增。
}
}
没有注释的:
status Judge (Linkedlist l)
{int *p,p=l->next;
if (p-next==NULL||p==NULL) return INFEASIBLE;
else {
while (p->next!=NULL&&p->data<p->next-data) p=p->next;
if (p-next!=NULL) return NO
else return YES;
}
}
就这么短。。。不知道上面那哥们怎么做的
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
#include<stdio.h>
#include<malloc.h>
struct node{
int key;
struct node *next;
};
void creat_link(struct node *);
main()
{
struct node *head=NULL;
creat_link(head);
}
void creat_link(struct node *head_node)
{
struct node *p,*q,*Temp;
int number;
printf("Please input data:[-1 is End]\n");
scanf("%d",&number);
while(number!=-1){
q=(struct node *)malloc(sizeof(struct node));
q->key=number;
if(head_node==NULL ){
head_node=q;
p=q;
}
else{
p->next=q;
p=q;
}
scanf("%d",&number);
}
p->next=NULL;
Temp=head_node;
while(Temp!=NULL){
printf("%d\n",Temp->key);
Temp=Temp->next;
}
}
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
#include<malloc.h>
struct node{
int key;
struct node *next;
};
void creat_link(struct node *);
main()
{
struct node *head=NULL;
creat_link(head);
}
void creat_link(struct node *head_node)
{
struct node *p,*q,*Temp;
int number;
printf("Please input data:[-1 is End]\n");
scanf("%d",&number);
while(number!=-1){
q=(struct node *)malloc(sizeof(struct node));
q->key=number;
if(head_node==NULL ){
head_node=q;
p=q;
}
else{
p->next=q;
p=q;
}
scanf("%d",&number);
}
p->next=NULL;
Temp=head_node;
while(Temp!=NULL){
printf("%d\n",Temp->key);
Temp=Temp->next;
}
}
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询