链表作业

本文详细介绍了单链表的各种基本操作实现,包括初始化、创建、显示、定位元素、查找最大值节点、计数特定值等,并提供了完整的C++代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream> using namespace std; typedef struct Node { int data; struct Node *next; }SLNode, *LinkList; int len; void SLLInitiate(SLNode **head) //初始化 { /*如果有内存空间,申请头结点空间并使头指针head指向头结点*/ if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1); (*head)->next = NULL; //置链尾标记NULL } int SLLCreate(LinkList &head) //建立单链表 { //逆位序输入n个元素的值,建立带表头结点的单链线性表L cout << "Input the amount of List:" << endl; cin >> len; head=(LinkList)malloc(sizeof(SLNode)); head->next = NULL; //先建立一个带头结点的单链表 cout << "Input the List:" << endl; for(int i=0;i<len;++i) { LinkList p=(LinkList)malloc(sizeof(SLNode)); scanf("%d", &p->data); //输入元素值 p->next = head->next; //插入到表头 head->next = p; } return 0; } void SLLDisplay(LinkList head) //对单链表进行输出 { LinkList L = head; head = head->next; printf("The list is:"); while(head) { printf("%d ",head->data); head = head->next; } head = L; cout << endl; } LinkList SLLLocate(LinkList head, int i)//搜索第i个元素并置为当前元素 { if(i<=0) return 0; SLNode *p = head; int k = 0; while(p!=NULL && k<i) { p = p->next; k++; } cout << "The number you Locate is " << p->data << endl; return p; } SLNode *SLLMax(LinkList head) //找出具有最大值的结点位置 { if(head->next == NULL) return 0; SLNode *pMax = head->next, *p=head->next->next; while(p!=NULL) { if(p->data > pMax->data) pMax = p; p = p->next; } cout << "The largest num of the list is " << pMax->data << endl; return pMax; } int SLLNumber(LinkList head, int x) //找出有多少个定值x { int n = 0; SLNode *p = head->next; while(p != NULL) { if(p->data == x) n++; p = p ->next; } return n; } int Create(LinkList &head, int a[], int n) //建立单链表 { //逆位序输入n个元素的值,建立带表头结点的单链线性表L head=(LinkList)malloc(sizeof(SLNode)); head->next = NULL; //先建立一个带头结点的单链表 for(int i=0;i<len;++i) { LinkList p=(LinkList)malloc(sizeof(SLNode)); p->data = a[i]; //输入元素值 p->next = head->next; //插入到表头 head->next = p; } cout << "The new list create with a[] is "; for(int i=0; i<n; i++) { cout << a[i] << '\t'; } cout << endl; return 0; } int SLLInsert(SLNode *head, int i, int x) { /*在带头结点的单链表head的第i(1<=i<=n+1,n为结点个数)个位置插入数据元素*/ SLNode *p, *q; int j; /*让指针p指向第i-1个结点*/ p = head; j = 0; while(p!=NULL && j<i-1) { p = p->next; j++; } if(j!=i-1) { cout << "插入位置参数错!" << endl; return 0; } /*生成新结点由指针q指示*/ if((q=(SLNode*)malloc(sizeof(SLNode))) == NULL) exit(1); q->data = x; q->next = p->next; p->next = q; //把新结点链入单链表中 return 1; } int SLLDelete(SLNode *head, int i, int *x) { /*删除带头结点的单链表head的第i(1<=i<=n,n为结点个数)个结点。删除结点的数据元素由x带回。删除成功时返回1;否则返回0*/ SLNode *p, *q; int j; /*让指针p指向第i-1个结点*/ p = head; j = 0; while(p->next!=NULL && j<i-1) { /*注意:这里要用条件p->next!=NULL,而不能用p!=NULL,否则当参数i不合法时,会因p->next不存在而出错*/ p = p->next; j++; } if(j!=i-1) { cout << "删除位置参数错!" << endl; return 0; } q = p->next; p->next = p->next->next; //删除指针q所指结点 *x = q->data; //把指针q所指结点的数据元素由x带回 free(q); //释放指针q所指结点的内存空间 return 1; } int SLLGet(SLNode *head, int i, int *x) { /*取结点元素,和删除函数类同,只是不删除结点i*/ SLNode *p; int j; p = head; j = 0; while(p->next!=NULL && j<i) { p = p->next; j++; } if(j!=i) { cout << "取元素位置参数错!" << endl; return 0; } *x = p->data; return 1; } int SLLNotEmpty(SLNode *head) //判断是否非空,非空返回1,空返回0 { if(head->next == NULL) return 0; else return 1; } int main() { int n, x, size; LinkList L; SLLCreate(L); SLLDisplay(L); cout << "Input the num you want to Locate: "; cin >> n; cout << "And the address of the Locate number is " << SLLLocate(L, n) << endl; cout << "And the address of the Largest number is " << SLLMax(L) << endl; cout << "Input the number you want to statistics "; cin >> x; cout << "There are " << SLLNumber(L, x) << " of the " << x << " in the list!" << endl; cout << "Input the num you want to create the length of the a[]: "; cin >> size; int *p = new int [size]; cout << "Input several numbers for the a[] to create a new list : " << endl; for(int i=0; i<size; i++) { cin >> p[i]; } cout << "The members of a[] are "; for(int i=0; i<size; i++) { cout << p[i] << '\t'; } cout << endl; Create(L, p, size); delete []p; system("pause"); }

CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种类型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以与更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种类型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片类型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了与现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值