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;
}
}