012. 2021-07-08

本文介绍了一个C语言实现的链表数据结构,包括 creat()函数创建链表、tailIsert()尾部插入元素、printfLkList()遍历打印链表以及delete()和tichu()删除节点的方法。重点在于理解链表的基本操作和内存管理。
摘要由CSDN通过智能技术生成

huan.c

#include <stdio.h>
#include <stdlib.h>
#include "huan.h"


List * creat()
{
	List *l = (List *)malloc(sizeof(List));
	l->first = l->last = NULL;
	l->n = 0;

	return l;
}


void tailIsert(List *l,Elemtype x)
{
	lNode *p = (lNode *)malloc(sizeof(lNode));
	p->data = x;
	p->next = p->prev = NULL;
	if(l->n == 0)
	{
		l->first = l->last = p;
	}
	else
	{
		l->last->next = p;
		p->next = l->first;
		p->prev = l->last;
		l->last = p;
		l->first->prev = l->last;  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4 4++++++1
	}
	l->n ++;
	
}


void printfLkList(List * l)
{
	lNode * p = l->first;
	int i;
	for(i=0;i<l->n;i++)//注意:循环链表中,不能使用 while(p)
	{
		printf("%d ",p->data);
		p = p->next;
	}
	printf("\n");

}


void delete(List *l)
{
	l->first->prev->next = l->first->next;
	l->first->next->prev = l->first->prev;

	l->first->next = NULL;
	l->first->prev = NULL;
	l->first->data = 0;
	free(l->first);
	
}

List * tichu(List *l)
{
	lNode *r = l->first;
	while(l->n != 1)
	{

		int i = 1;
		while(i<4)
		{
			r = l->first->next;
			if(i == 3)
			{
				//printf("get in\n");
				delete(l);
				l->n--;
			}
			
			l->first = r;
			i++;
		}
	}
	return l;
}








15:23:44.436 -> --------------- CUT HERE FOR EXCEPTION DECODER --------------- 15:23:44.532 -> 15:23:44.532 -> Soft WDT reset 15:23:44.532 -> 15:23:44.532 -> Exception (4): 15:23:44.532 -> epc1=0x40106871 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 15:23:44.628 -> 15:23:44.628 -> >>>stack>>> 15:23:44.628 -> 15:23:44.628 -> ctx: cont 15:23:44.628 -> sp: 3ffffd30 end: 3fffffd0 offset: 0160 15:23:44.676 -> 3ffffe90: 60000314 00000006 00000044 40202e23 15:23:44.724 -> 3ffffea0: 00000002 3ffee608 3ffee774 40202f11 15:23:44.820 -> 3ffffeb0: 00000048 3ffee774 00000001 3ffee57d 15:23:44.820 -> 3ffffec0: 60000314 00000001 3ffee774 00000002 15:23:44.916 -> 3ffffed0: 3ffef5c4 3ffee556 00000002 402013c0 15:23:44.965 -> 3ffffee0: 00000001 00000048 00000000 402013f4 15:23:45.012 -> 3ffffef0: 3ffee774 3ffee57c 00000002 402017e4 15:23:45.060 -> 3fffff00: 00000000 00000001 3ffee574 3ffef5c4 15:23:45.108 -> 3fffff10: 00000002 00000002 00000000 40201860 15:23:45.156 -> 3fffff20: 3ffee556 00000001 00000001 00000000 15:23:45.204 -> 3fffff30: 00000000 00000003 3ffef5c4 3ffee72c 15:23:45.252 -> 3fffff40: 3fffdad0 3ffee556 3ffee548 402015bc 15:23:45.300 -> 3fffff50: 60000314 00000000 3ffee548 402015e4 15:23:45.396 -> 3fffff60: 3fffdad0 00000000 3ffee548 40201692 15:23:45.396 -> 3fffff70: 00000001 00000048 3ffee548 402010a3 15:23:45.492 -> 3fffff80: 00000000 feefeffe 3ffee774 3ffee72c 15:23:45.492 -> 3fffff90: 3fffdad0 00000000 3ffee574 4020143c 15:23:45.588 -> 3fffffa0: 3ffee55c 00000000 3ffef5c4 3ffee72c 15:23:45.636 -> 3fffffb0: 3fffdad0 00000000 3ffee700 40202300 15:23:45.685 -> 3fffffc0: feefeffe feefeffe 3fffdab0 40100eb1 15:23:45.733 -> <<<stack<<< 15:23:45.733 -> 15:23:45.733 -> --------------- CUT HERE FOR EXCEPTION DECODER --------------- 15:23:45.828 -> H!⸮⸮L^⸮ ⸮⸮@H⸮JG⸮⸮⸮E
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值