单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
定义结构
typedef struct LINK//定义结构链表
{
int data;//数据域
struct LINK *next;//指针域
}link;
初始化链表
link * initlink(){
//初始化一个单链表
link * p=(link*)malloc(sizeof(link));//创建头结点
link * temp = p;//创建一个临时指针指向头结点
for(int i=10;i>=1;i--){
//创建一个1-10的单链表
link *a = (link*)malloc(sizeof(link));//申请一个新节点
a->data = i;
a->next = NULL;//初始化新节点
temp->next=a;
temp = temp->next;//临时指针指向下一个
}
return p;
}
遍历输出链表
void putout(link *p){
//遍历输出链表
link *temp = p;
while(temp->next){
temp = temp->next;
printf("%d ",temp->data);
}
printf("\n");
}
按序查找元素
int finddata(link *p,int i){
//按序查找元素的位置,i为要查找的值
link *temp = p;
int j = 0;
while(j<i && temp){
temp = temp->next;
j++;
}
return temp->data;
}
插入
link * insertelme(link *p,int loc,int elem){
//插入元素,loc为位置,elem为元素