给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现。
答案:
非递归可运行代码:
typedef struct node {
struct node *next;
int data;
} node;
void createList(node **head, int data)
{
node *pre, *cur, *new;
pre = NULL;
cur = *head;
while (cur != NULL) {
pre = cur;
cur = cur->next;
}
new = (node *)malloc(sizeof(node));
new->data = data;
new->next = cur;
if (pre == NULL)
*head = new;
else
pre->next = new;
}
void printLink(node *head)
{
while (head->next != NULL) {
printf(""%d "", head->data);
head = head->next;
}
printf(""%dn"", head->data);
}
int linkLen(node *head)
{
int len = 0;
while (head != NULL) {
len &#