#include
using namespace std;
struct ListNode
{
int val;
ListNode* next;
ListNode() : val(0), next(NULL) {}
ListNode(int x) : val(x), next(NULL) {}
ListNode(int x, ListNode* next) : val(x), next(next) {}
};
class Solution {
public:
int middleNode(ListNode* head) {
ListNode* sum = head;
int m = 1;
while (sum != NULL)
{
sum = sum->next;
m++;
}
for (int i = 0;i < m / 2;i++)
{
head = head->next;
}
return head;
}
};
ListNode* createByTail()
{
ListNode* head;
ListNode* p1, * p2;
int n = 0, num;
int len;
cin >> len;
head = NULL;
while (n && cin >> num)
{
p1 = new ListNode(num);
n = n + 1;
if (n == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
}
return head;
}
int main()
{
ListNode* head = createByTail();
int result = Solution().middleNode(head);
cout << result << endl;
return 0;
}
题目要求是输入一个无头结点的非空链表,返回中间结点,若有两个中间结点,就返回第二个中间结点,但给定的函数是返回int型数据,要如何把结点以int型数据返回
就是返回中间结点的val值就行了啊
return head->val;