#include <stdio.h> #include <stdlib.h> typedef struct node { int val; struct node *next; } Node; Node *newNode(int val); void freeList(Node *head); Node *removeKthNode(Node *head, int k); int main(void) { int n, k, val; Node *node, *head = NULL, *cur = NULL; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { scanf("%d", &val); node = newNode(val); if (head == NULL) { head = cur = node; continue; } cur->next = node; cur = cur->next; } head = removeKthNode(head, k); cur = head; while (cur != NULL) { printf("%d", cur->val); cur = cur->next; if (cur != NULL) printf(" "); } printf("\n"); freeList(head); return 0; } Node *newNode(int val) { Node *node = (Node *) malloc(sizeof(Node)); node->val = val; node->next = NULL; return node; } void freeList(Node *head) { Node *old; while (head != NULL) { old = head; head = head->next; free(old); } } Node *removeKthNode(Node *head, int k) { Node *cur = head, *pre = NULL, *old; for (int i = 1; i < k; i++) { pre = cur; cur = cur->next; } if (pre == NULL) { old = head; head = head->next; } else { old = pre->next; pre->next = pre->next->next; } free(old); return head; }
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct ListNode { ElemType data; struct ListNode* next; } ListNode, *PLNode, *L; void print_list(L head) { while (head) { fprintf(stdout, "%d", head->data); if (head->next) fputc(32, stdout); head = head->next; } } int main(const int argc, const char* const argv[]) { int n, m; fscanf(stdin, "%d %d", &n, &m); L dummy = (PLNode) malloc (sizeof(ListNode)); if (!dummy) exit(0); int x; PLNode tail = dummy; while (fscanf(stdin, "%d", &x) != EOF) { tail = tail->next = (PLNode) malloc(sizeof(ListNode)); tail->data = x; tail->next = NULL; } PLNode pre, curr = dummy; while (m--) { pre = curr; curr = curr->next; } pre->next = curr->next; // delete node print_list(dummy->next); return 0; }