数据结构中(单链表)

list.h

lish.h
#ifndef _list_h
#define _list_h
typedef int ElementType;
struct Node
{
    ElemnetType Element;
    struct Node *Next;
};
typedef struct Node* PtrToNode;
typedef PtrToNode list;
typedef PtrToNode Position;

list Create_Head_Node(void);//创建一个表头
Position Create_New_Node(ElementType Element);//创建一个节点
void Add_Node_tail(List L,ElementType Element);//在表的末尾插入节点
void Show_List(List L);//打印列表
void delete_value(List L,ElementType Element);//使用一个结构体指针实现
void delete_value1(List L,ElementType Element);//使用两个结构体指针实现
void Insert_valuePosition(List L,ElementType Element,int pos);//在指定位置插入节点,但是插入位置受表的长度的限制,最大可插入的位置为表的长度加一。

具体的.c源文件,后面会更新

List Create_Head_Node(void)
{
    Position P;
    P = (List)malloc(sizeof(List));
    if(NULL==P)
    {
        Printf(malloc error!);
        return NULL;
    }
    P->Next = NULL;
    P->Element = 0;
    return P;
}
/*create a new node */
Position Create_New_Node(ElementType Element)
{
    Position P;
    P = Create_Head_Node();
    P->Element = Element;
    return P;
}
/*add date from the tail of the list*/
void Add_Node_tail(List L,ElementType Element)
{
    Position P;
    P = L;
    Position q = Create_New_Node(Element);
    while(P->Next!=NULL)
        P = P->Next;
    P->Next = q;
    L->Element++;
}
/*print list in ordor*/
void Print_List(List L)
{
    Position P;
    P=L;
    while(P->Next!=NULL)
    {
        printf("%d ",P->Element);
        P = P->Next;
    }   
    printf("%d\n,P->Element);
}
/*delete the list node by value ,which can delete all the value of the list*/
void delete_value(List L,ElementType Element)
{
    Position P,tmp;
    P=L;
    while(P->Next!=NULL)
    {
        if((P->Next->Element)==Element)
        {
            tmp = P->Next->Next;
            free(P->Next);
            P->Next = tmp;
            continue;
        }
        P = P->Next;
    }
}
/*using two points to realize the function of delete*/
void delete_value1(List L,ElementType Element)
{
    Position P,tmp;
    tmp = L;
    P = tmp->Next;
    while(P!=NULL)
    {    
        if(P->Element == Element)    
        {
            tmp ->Next = P->Next;
            free(p);
            P = tmp ->Next;
            continue;
        }
    tmp = tmp->Next;
    P = P->Next;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值