2026考公/考研寄宿

高三式 半军事化 强化管理 一战成硕

2026考研专业课资料

覆盖全国7万+初试/复试专业课资料

134 5670 7733

各地信息

计算机考研复试编程题 订阅+ 进入阅读模式

2024-09-24 14:00 来源:刘老师

计算机考研复试中,编程题是考查考生实践能力的重要环节,以下为高频题型及C语言实现:

题目1:反转链表。要求将单链表反转,如输入1→2→3→4,输出4→3→2→1。

实现思路:使用三个指针(prev、curr、next)遍历链表,依次反转节点指向。

代码:

struct ListNode* reverseList(struct ListNode* head) {

struct ListNode *prev = NULL, *curr = head, *next;

while(curr) {

next = curr->next;

curr->next = prev;

prev = curr;

curr = next;

}

return prev;

}

题目2:二叉树层序遍历。要求按层次输出二叉树节点值,如三层树输出为第一层、第二层、第三层节点值。

实现思路:使用队列存储各层节点,出队时将子节点入队。

代码:

void levelOrder(struct TreeNode* root) {

if(!root) return;

struct Queue* q = initQueue();

enQueue(q, root);

while(!isEmpty(q)) {

int size = getSize(q);

for(int i=0; i

struct TreeNode* node = deQueue(q);

printf("%d ", node->val);

if(node->left) enQueue(q, node->left);

if(node->right) enQueue(q, node->right);

}

printf(" ");

}

}

题目3:最长回文子串。给定字符串,找出最长的回文子串,如输入"babad",输出"bab"或"aba"。

实现思路:中心扩展法,对每个字符和相邻字符对向两边扩展,记录最长回文。

代码:

char* longestPalindrome(char* s) {

int start=0, end=0;

for(int i=0; s[i]; i++) {

int len1 = expand(s, i, i);

int len2 = expand(s, i, i+1);

int len = len1 > len2 ? len1 : len2;

if(len > end - start) {

start = i - (len-1)/2;

end = i + len/2;

}

}

char* res = malloc(end - start + 2);

strncpy(res, s+start, end-start+1);

res[end-start+1] = '';

return res;

}

int expand(char* s, int l, int r) {

while(l>=0 && s[r] && s[l]==s[r]) l--, r++;

return r - l - 1;

}

这些题型涵盖了链表、树、字符串等核心数据结构,掌握其实现思路对复试至关重要。

THE END  

声明:本站点发布的来源标注为“思研教育”的文章,版权均属思研教育所有,未经允许不得转载。

免责声明:本站所提供试题均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用,不涉及商业盈利目的。如涉及版权问题,请联系本站管理员予以更改或删除。