线性表的链式存储结构之链表
代码实现链表的插入,删除
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef int Status;
typedef struct Node {
ElemType data;
struct Node *next;
} Node;
typedef struct Node *LinkList;
// 插入数据
Status ListInsert(LinkList *L, int index, ElemType e)
{
int j;
LinkList p, s;
p = *L;
j = 1;
// 寻找第i个结点
while (p && j < index) {
p = p->next;
++j;
}
if (!p || j > index)
return 0;
s = (LinkList)malloc(sizeof(Node));
s->data = e;
s->next = p->next;
p->next = s;
return 1;
}
Status ListShow(LinkList L)
{
LinkList p = L->next;
while (p)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return 1;
}
Status ListDelete(LinkList *L, int index)
{
int j;
LinkList p, q;
p = *L;
j = 1;
while (p->next && j < index)
{
p = p->next;
++j;
}
if (!(p->next) || j > index)
return 0;
q = p->next;
p->next = q->next;
free(q);
return 1;
}
int main()
{
// 创建链表表头,也就是初始化了链表
LinkList List = (LinkList)malloc(sizeof(Node));
List->next = NULL;
// 插入一些数据
int i;
for (i = 1; i <= 5; i++) {
ListInsert(&List, i, i);
}
printf("显示链表\n");
ListShow(List);
ListDelete(&List, 3);
printf("删除后链表\n");
ListShow(List);
// 防止控制台消失
getchar();
return 0;
}
O(∩_∩)O~~