【C站水库】------- 博主的灌水区(🤫嘘,别被审核发现了)
今天写了一道题:
?代码:
#include<iostream>
#include<cstdio>
#include<stdlib.h>
using namespace std;
struct node{
int val;
node* next;
};
void printLink(node* head){
printf("现在的单链表是:\n");
while(head){
printf("%d ",head->val);
head=head->next;
}
cout<<endl;
}
node* createLink(){
node *head,*tail;
head=tail=NULL;
int x;
printf("请输入一串单链表的值,以'-1'结束:\n");
while(cin>>x&&x!=-1){
node* temp;
temp=new node;
temp->val=x;
if(head==NULL){
head=tail=temp;
}
else{
tail->next=temp;
tail=temp;
}
}
if(tail!=NULL) tail->next=NULL;
return head;
}
void deletefirst(node* head){
int x;
printf("请输入你要删除的结点(本次仅删除第一个):\n");
cin>>x;
node* temp=head,*pre=NULL;
while(temp&&temp->val!=x){
pre=temp;
temp=temp->next;
}
if(pre==NULL){
head=head->next;
free(temp);
}
else{
pre->next=temp->next;
free(temp);
}
}
void reverse(node* head){
printf("链表倒置中...\n");
int nums[100],k=0;
node *temp=head;
while(temp){
nums[k++]=temp->val;
temp=temp->next;
}
node *temp2=head;
while(temp2){
temp2->val=nums[--k];
temp2=temp2->next;
}
}
node* insertLink(node *head){
printf("请输入你要插入的值:\n");
int x;cin>>x;
node *temp;
temp=new node;
temp->val=x;
if(x<=head->val){
temp->next=head;
head=temp;
}
else{
node *temp2=head;
while(temp2->next&&temp2->next->val<x){
temp2=temp2->next;
}
temp->next=temp2->next;
temp2->next=temp;
}
return head;
}
node* deleteall(node *head){
printf("请输入你要删除的值(本次删除所有该值):\n");
int x;cin>>x;
node *temp=head,*pre=head;
while(temp){
if(temp->val==x){
if(temp==head){
head=head->next;
}
else{
pre->next=temp->next;
}
}
else{
pre=temp;
}
temp=temp->next;
}
return head;
}
int main(){
node* head;
head=createLink();
printLink(head);
deletefirst(head);
printLink(head);
reverse(head);
printLink(head);
node* head2;
head2=createLink();
for(int i=0;i<3;i++){
head2=insertLink(head2);
printLink(head2);
}
head2=deleteall(head2);
printLink(head2);
return 0;
}
|