数据结构——单链表整表操作(C语言)

数据结构——单链表整表操作(C语言)

1.单链表的创建
顺序存储结构的创建其实就是一个数组初始化的过程,即声明一个类型和大小的数组并赋值的过程,但是单链表不一样,它是一种动态结构。它的空间大小和位置不需要预先分配,可以根据要求随时生成。我们可以给出以下的代码去实现:

#define OK 1               
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef struct Node{
	ElemType data;
	struct Node *Next;
}Node;
typedef struct Node *LinkList;           //单链表的存储结构



void CreateListHead(LinkList *L,int n){
	LinkList p;
	int i;
	srand(time(0));         //初始化随机数种子
	*L=(LinkList)malloc(sizeof(Node));
	(*L)->next=NULL;         //建立一个带头结点的单链表
	for(i=0;i<n;i++){
		p=(LinkList)malloc(sizeof(Node));     //生成新的节点
		p->data = rand()%100+1;      //随机生成100以内的数字
		p->next = (*L)->next;
		(*L)->next = p;                  //插入表头
			}
}

这段代码里,我们用的是插队的办法,就是始终让新的节点在第一的位置,我们称之为头插法建表。
然而,如果我们把新的节点放在最后,也就是尾插法,我们可以这样实现:

void CreateListHead(LinkList *L,int n){
	LinkList p,r;
	int i;
	srand(time(0));            //初始化随机数种子
	*L=(LinkList)malloc(sizeof(Node));
	r=*L;
	for(i=0;i<n;i++){
		p=(Node*)malloc(sizeof(Node));     //生成新的节点
		p->data = rand()%100+1;      //随机生成100以内的数字
		r->next = p;           //将表尾终端节点的指针指向新的节点
		r = p;                  //将当前新节点定义为表尾终端节点
			}
			r->next=NULL;          //新的节点的指针域为空
}

2.单链表的整表删除
当我们不打算使用这个单链表时,要将其删除并释放内存,留出空间给其他程序使用。

Status ClearList(LinkList *L){
	LinkList p,q;
	p=(*L)->next;             //p指向第一个节点
	while(p){
		q=p->next;
		free(q);
		p=q;
	}
	(*L)->next=NULL;        //头节点指针域为空
	return OK;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值