1.链表的存储结构
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,LinkList;
2.链表初始化
void InitList_L(LinkList *L)
{
L->next=NULL;
}
3.链表尾部插入一个元素e
int ListInsert_Tail_L(LinkList *L,ElemType e)
{
LNode *p=L;
while(p->next!=NULL)
{
p=p->next;
}
LNode *q=(LNode *)malloc(sizeof(LNode));
q->data=e;
q->next=NULL;
p->next=q;
return OK;
}
4.链表特定位置i插入一个元素e
int ListInsert_i_L(LinkList *L,int i,ElemType e)
{
LNode *p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1) return ERROR;
LNode *q=(LNode *)malloc(sizeof(LNode));
q->data=e;
q->next=p->next;
p->next=q;
return OK;
}
5.输出链表中的元素
void ListPrint_L(LinkList *L)
{
LNode *p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}