数据结构的一道习题 在带头结点的单链表中删除数据域的值等于a 的结点
1个回答
展开全部
从首元(头结点指向的节点)开始,依次查看是此节点的数据否有下一个节点的数据大,如果存在一个节点的数据比下一个节点大,说明不是递增。反之如果考察到最后一个节点之前都比下一个节点小,那么就是递增
如果节点定义如下:
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;
}
}
就这么短。。。不知道上面那哥们怎么做的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |