数据结构练习-链表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;
}

下一篇 数据结构练习_链表2

2019/7/28/22/58 JN HOT
posted @ 2019-07-28 23:01  LmLmLms  阅读(192)  评论(0编辑  收藏  举报