CC11. 牛牛的链表删除
描述
牛牛从键盘输入了一个长度为 n 的数组,把这个数组转换成链表然后把链表中所有值是 x 的节点都删除。输入描述
输出描述
把数组转换成链表然后删除所有值是 x 的节点,删除后输出这个链表。示例1
输入:
5 3 1 5 3 2 3
输出:
1 5 2
示例2
输入:
5 3 1 5 2 7 8
输出:
1 5 2 7 8
示例3
输入:
5 3 1 5 3 2 4
输出:
1 5 2 4
C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-03-21
#include "stdio.h" #include "stdlib.h" typedef struct Link { int data; struct Link *next; }link; int main(){ int len,del_val; link *p = (link*)malloc(sizeof(link));//创建头节点 link *temp = p; scanf("%d",&len); scanf("%d",&del_val); for(int i=0; i<len; i++){ link *a = (link *)malloc(sizeof(link)); scanf("%d",&a->data); a->next = NULL;//新创建为尾节点 temp->next = a;//将上一节点指针指向当前节点 temp = temp -> next;//当前节点为新创建的节点 } temp = p; while(temp->next != NULL){ if(temp->next->data==del_val) if(temp->next->next==NULL){ temp->next = NULL; break; } else{ temp->next = temp->next->next; temp = temp->next; } else temp = temp->next; printf("%d ",temp->data); } }
C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-03-17
#include<stdio.h> #define LEN sizeof(Link) typedef struct List { int value; struct List*next; }Link,*Linklist; int main() { int i,n,x; scanf("%d %d",&n,&x); int array[n]; for(i=0;i<n;i++) { scanf("%d",&array[i]); } Link*head=(Link*)malloc(LEN); Link*p=head; for(i=0;i<n;i++) { Link*s=(Link*)malloc(LEN); s->value=array[i]; s->next=NULL; p->next=s; p=s; } p=head; while(p->next) { /*if(p->value==x) { p=p->next; head=p; }*/ if(p->next->value==x) { p->next=p->next->next; } else { p=p->next; } } p=head; while(p->next) { p=p->next; printf("%d ",p->value); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2022-07-26
#include<stdio.h> #include<stdlib.h> struct node{ int data; struct node* next; }; int main(){ int n,x,i; int a[100]; scanf("%d",&n); scanf("%d",&x); struct node*head=malloc(sizeof(struct node)); head->next=NULL; struct node* current=head; for(i=0;i<n;i++){ scanf("%d",&a[i]); struct node* node=malloc(sizeof(struct node)); node->data=a[i]; node->next=NULL; current->next=node; current=current->next; } struct node* currentfron=head; current=head->next; while(current){ if(current->data==x){ currentfron->next=current->next; } currentfron=current; current=current->next; } current=head->next; while(current){ printf("%d ",current->data); current=current->next; } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2022-04-15
#include <stdio.h> #include <stdlib.h> typedef struct link{ int data; struct link *next; }Link; int main(void) { int len=0; int delvalue=0; int arr[10]={0}; Link *head=(Link*)malloc(sizeof(Link)); Link *temp=head; Link *lasttemp=NULL; scanf("%d %d",&len, &delvalue); for(int i=0;i<len;i++) { scanf("%d ", &arr[i]); } for(int j=0;j<len;j++) { Link *a=(Link*)malloc(sizeof(Link)); a->data=arr[j]; a->next=NULL; temp->next=a; temp=temp->next; } temp=head; for(int k=0;k<len;k++) { lasttemp=temp; temp=temp->next; if((temp->data)==delvalue) { Link *del=temp; lasttemp->next=lasttemp->next->next; //free(del); } } temp=head; while(temp->next) { temp=temp->next; printf("%d ", temp->data); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 316KB, 提交时间: 2022-06-06
#include <stdio.h> #include <stdlib.h> typedef struct link { int data; struct link *next; }link; link *create_list(int n,int arr[]) { link *head = NULL; link *list = NULL; link *tail = NULL; head = (link *)malloc(sizeof(link)); if(head == NULL) { printf("malloc error"); return head; } head->next = NULL; tail = head; for(int i = 0;i < n;i++) { list = (link *)malloc(sizeof(link)); if(list == NULL) { printf("malloc error"); return head; } list->data = arr[i]; tail->next = list; tail = list; list->next = NULL; } return head; } void print_list(link *head) { link *pa = head->next; while(pa != NULL) { printf("%d ",pa->data); pa = pa->next; } } link *del_list(link *head,int num) { link *pa = head; link *pt = head->next; while(pt != NULL) { if(num == pt->data) { pa->next = pt->next; free(pt); break; } pa = pt; pt = pt->next; } return head; } int main() { int n = 0; int arr[20]; int i = 0; int num = 0; scanf("%d",&n); scanf("%d",&num); for(i = 0;i < n;i++) { scanf("%d",&arr[i]); } link *head = create_list(n,arr); link *pp = del_list(head,num); print_list(pp); return 0; }