链表的形式相对于数组比较复杂,它是一个结构体的形式如下:
struct node
{
int data ;
struct node *next ;
}
/////////////////////////////////////////////////////////////////
typedef struct node
{
int data;
struct node *next ;
}NODE ;
上面是两种链表的形式,可以看出链表分为数据域和指针域两部分组成。
知道了链表的一般形式以后,下面是对链表的一些基础的操作:
1.求表长
int length(NODE *head )
{
int number ;
NODE *p ;
number = 0 ;
while(p){
p = p->next ;
number ++ ;
}
return number ;
}
2.查找
按序号查找
int find (NODE *head , int k )
{
NODE *P ;
int i = 0 ;
p = head ;
while(i<k&&p!=NULL)
{
i++ ;
p = p->next ;
}
if( i == k )
return p->data ;
else
return -1 ;
}
桉数查找序号
int find (NODE *head ,int key )
{
int i = 0 ;
NODE *p ;
p = head ;
while(p&&p->data != key )
{
i++ ;
}
if(p->data == key )
return i ;
else
return -1 ;
}
3插入
NODE *insert(NODE *head , int k , int x)
{
int i = 0 ;
NODE *p ,*q ;
p = head ;
for( i = 0 ; i<=k ; i++)
{
p =p->next ;
}
q = (NODE *)malloc(sizeof(NODE)) ;
q ->data = x ;
q->next = p->next ;
p->next =q ;
return head ;
}
4删除
NODE *del (NODE *head, int key )
{
NODE *p , *q ;
int i = 0 ;
p = head ;
while(i<key )
{
p = p->next ;
}
q = p->next ;
p->next = q->next ;
free(q) ;
return head ;
}
5建表
链接:https://blog.youkuaiyun.com/qq_43345339/article/details/84943194