求线性表的c++程序

来源:百度知道 编辑:UC知道 时间:2024/09/22 11:17:04
有一个线性表存储在一个带头结点的循环单链表L中。写出计算线性表元素个数的算法。
还有一个就是设计一个将链表逆置的算法。是同学叫帮忙的,各位牛人们来帮忙下,有追加

题一:
int Lcount(mytype *head) //mytype 为你定义的节点类型
{ mytype *bh=head;
int n=1;
if(head==NULL) return 0;
while(head!=(bh=bh->next)) n++;
return n;
}
题二:给个单链表的。先理清较简单的单链表逆序的思路,双链表的逆序就不在话下了
typedef struct _list_node
{
double keyVal;
struct _list_node *next;
}ListNode;
ListNode* reverseList(ListNode* head)
{
ListNode *p1, *p2 , *p3;
//链表为空,或是单结点链表直接返回头结点
if (head == NULL || head->next == NULL)
{
return head;
}
p1 = head;
p2 = head->next;
while (p2 != NULL)
{
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head->next = NULL;
head = p1;

return head;
}