数据结构练习-链表1
用c写一点数据结构
链表下面具体还可以再分好多种,单单就其本身的一些方法就有很多,先慢慢来,从第一步开始,建立,插入,遍历开始,慢慢深入理解链表
#include<stdio.h>
#include<stdlib.h>
#define INIT 0;
typedef struct node
{
int data;
struct node* next;
}LNode,*LinkList;
/*
链表本身是一种抽象的数据结构,这种结构通过指针的
指向来完成数据结构的组装。所以在C语言中可以利用结构体
完成对数据和“锁链”的封装。由于C语言的特性,所以使用
typedef来进行重新命名,以便使用。
*/
LinkList CreatLinkList()
{
LinkList p=NULL;
int e=INIT;
p = (LinkList)malloc(sizeof(LNode));
p->data = e;
p->next = NULL;
return p;
}
/*
初始化,或者称为创建一个链表。就这个链表本身而言,我不希望
它有长度限制,因此,需要通过LinkList来创建一个头结点,这是
找到这个链表的标志。
*/
void insertList(LinkList list, int j)
{
LinkList x;
x = (LinkList)malloc(sizeof(LNode));
x->data = j;
x->next = NULL;
LinkList y = list;
while (y->next != NULL)
{
y = y->next;
}
y->next = x;
}
/*
向链表内插入数据,这里要注意的是每个数据都要申请一个结点,
这个结点的数据位将存放的是有效的数据。如果仅仅是简单的向后插入,
我们只需要找到这个链表的尾巴。由此,利用while本身的判断+循环功
能,就可以找到链表的尾巴。y->next!=NULL我们的目标是这个,
切记不可y!=NULL。我们的目的是将结点插入尾巴,所以要找到
y->next是空,这样让y指向结点就完成插入了。
*/
void traversing(LinkList list)
{
LinkList b = list;
while (b != NULL)
{
printf("%d ", b->data);
b = b->next;
}
printf("\n");
}
//原理同插入新数据。
int main()
{
LinkList c = CreatLinkList();
insertList(c, 8);
insertList(c, 9);
insertList(c, 0);
insertList(c, 8);
traversing(c);
return 0;
}
2019/7/28/22/58 JN HOT