【C站水库】无头结点的单链表操作

【C站水库】------- 博主的灌水区(🤫嘘,别被审核发现了)

今天写了一道题:

 代码:

#include
#include
#include
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<>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->valnext;}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;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部