#include <iostream>
using namespace std;
/* 创建一个单链表 */
struct Node{
int data;
Node *next;
};
void creatateList(Node *head,int arr[],int n){
Node *p=head;
for(int i=0;i<n;i++){
Node *pnewNode=new Node;
pnewNode->data=arr[i];
pnewNode->next=NULL;
p->next=pnewNode;
p=pnewNode;
}
}
void Listprintf(Node *head){
Node *p=head->next;
while(p!=NULL){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
//插入元素
Node *insert(Node *head,int num){
Node *p=head;
Node *p1,*p2;
p1=new Node;
p2=new Node;
p1->data=num;
while(p1->data>p->data&&p!=NULL){
p2=p;
p=p->next;
}
if(p1->data<=p->data){
if(p==head){
p1->next=p;
head=p1;
}else {
p1->next=p;
p2->next=p1;
}
}else {
p->next=p1;
p1->next=NULL;
}
return head;
}
//删除元素
Node *deleteList(Node *head,int num){
Node *p=head,*p1,*p2;
p1=new Node;
p2=new Node;
p1->data=num;
while(p1->data!=p->data&&p->next!=NULL){
p2=p;
p=p->next;
}
if(p1->data==p->data){
if(p==head){
head=p->next;
delete p;
}else {
p2->next=p->next;
delete p;
}
}else {
cout<<num<<"No find"<<endl;
}
return head;
}
//释放空间
void cleanList(Node *head){
while(head->next!=NULL){
Node *p= head->next;
delete head;
head=p;
}
}
int main()
{
Node *head=NULL;
head =new Node;
head->data=0;
head->next=NULL;
int n=10;
int a[n];
for(int i=0;i<10;i++)a[i]=(i+1)*(i+1);
creatateList(head,a,10);
Listprintf(head);
head=insert(head,30);
Listprintf(head);
head = deleteList(head,25);
Listprintf(head);
head = deleteList(head,454);
Listprintf(head);
return 0;
}
单向链表:
最新推荐文章于 2024-08-03 21:32:38 发布