头文件
#ifndef __HEAD__
#define __HEAD__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
enum
{
FALSE=-1,
SUCCESS
};
typedef int datatype;
//定义节点结构体
typedef struct Node
{
datatype data;
struct Node *next;
}*Linklist;
Linklist inter(Linklist head,datatype element);
void output(Linklist head);
Linklist inter_rear(Linklist head,datatype element);
Linklist delete(Linklist head);
Linklist delete_rear(Linklist head);
Linklist inter_pos(int pos,datatype element,Linklist head);
Linklist del_pos(int pos,Linklist head);
void cat(int pos,Linklist head);
void change(int pos,Linklist head,datatype element);
Linklist rev(Linklist head);
void find(Linklist head,int n);
datatype search(int key,Linklist head);
void change_key(int key,datatype element,Linklist head);
Linklist del_key(int key,Linklist head);
Linklist sort(Linklist head);
Linklist release(Linklist head);
#endif
1.单链表按任意元素查找
主函数
int key;
printf("please enter yoo are looking for key:");
scanf("%d",&key);
int a=search(key,head);
if(a==-1)
printf("ERROR\n");
else
printf("%d\n",a);
自定义函数
datatype search(int key,Linklist head)
{
if(NULL==head)
{
return -1;
}
Linklist p=head;
for(int i=0;i<lenght(head);i++)
{
if(p->data==key)
{
int index=i+1;
return index;
}else
p=p->next;
}
return -1;
}
结果
2.单链表按任意元素修改
主函数
int key;
printf("please enter you are looking for key:");
scanf("%d",&key);
printf("please enter you want to modify element:");
scanf("%d",&element);
change_key(key,element,head);
output(head);
自定义函数
void change_key(int key,datatype element,Linklist head)
{
if(NULL==head)
return;
Linklist p=head;
while(p->data!=key && p->next!=NULL)
{
p=p->next;
}
if(p->data!=key)
{
puts("ERROR");
return;
}
p->data=element;
return;
}
结果
3.单链表按任意元素删除
主函数
int key;
printf("please enter you are looking for key:");
scanf("%d",&key);
head=del_key(key,head);
output(head);
自定义函数
Linklist del_key(int key,Linklist head)
{
if(NULL==head)
return head;
Linklist p=head;
if(p->next==NULL && p->data==key)
{
delete(head);
return NULL;
}
int index=0;
for(int i=1;i<=lenght(head);i++)
{
if(p->data==key)
{
index=i;
}
p=p->next;
}
if(index==0)
{
puts("ERROR");
return head;
}
else
{
p=head;
for(int i=1;i<index-1;i++)
{
p=p->next;
}
}
Linklist del=p->next;
p->next=del->next;
free(del);
del=NULL;
return head;
}
结果
4.单链表排序
主函数
head=sort(head);
output(head);
自定义函数
Linklist sort(Linklist head)
{
if(NULL==head)
{
puts("ERROR");
return head;
}
for(int i=1;i<lenght(head);i++)
{
Linklist p=head;
for(int j=0;j<lenght(head)-i;j++)
{
if(p->data>p->next->data)
{
datatype t=p->data;
p->data=p->next->data;
p->next->data=t;
}
p=p->next;
}
}
return head;
}
结果
5.单链表内存释放
主函数
head=release(head);
output(head);
自定义函数
Linklist release(Linklist head)
{
if(NULL==head)
return head;
int len=lenght(head);
for(int i=0;i<len;i++)
{
head=delete(head);
}
return head;
}
结果