创建结构体:
typedef struct list
{
int data;
struct list* next;
}node, * Linklist;//定义结构体
1.初始化单链表
//初始化链表
void Initlist(Linklist* L)//二级指针
{
*L = (Linklist)malloc(sizeof(node));
(*L)->next = NULL;
//建立头结点
}
2.建立单链表
//创建链表
void creatList(Linklist L)
{
node* r = L;
printf("请输入数字\n");
int a;
do {
scanf("%d", &a);
node* s;
s = (Linklist)malloc(sizeof(node));
s->next = NULL;
s->data = a;
r->next = s;
r = s;
} while (a != 0);
}
3.链表的插入
void InsertList(Linklist L, int i, int num)
{
node* p = L, * r, * pre=NULL, * s; int k = 0;
while (p != NULL && k < i)//将指针指向i-1位
{
pre = p;
p = p->next;
k++;
}
s = (Linklist)malloc(sizeof(node));
s->data = num;
r = pre->next;
pre->next = s;
s->next = r;
}
4.链表的删除
//删除链表数据
void Deletlist(Linklist L, int i)
{
int k = 0; node* pre=NULL, * p = L;
while (p != NULL && k < i)
{
pre = p;
p = p->next;
k++;
}
node* r = pre->next;
pre->next = r->next;
free(r);
}
5.链表的打印
//打印链表
void PrintList(Linklist L)
{
node* p = L->next;
while (p != NULL)
{
printf("%d\n", p->data);
p = p->next;
}
}