首页 > 编程知识 正文

链式表操作集pta,pta单链表遍历

时间:2023-05-04 09:19:17 阅读:236033 作者:2681

一、求单链表的表长

本题要求实现一个函数,求带头结点的单链表的表长。

函数接口定义: int Length ( LinkList L );

其中LinkList结构定义如下:

typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;

L是带头结点的单链表的头指针,函数Length返回单链表的长度。

裁判测试程序样例: #include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList Create();/* 细节在此不表 */int Length ( LinkList L );int main(){ LinkList L = Create(); printf("%dn", Length(L)); return 0;}/* 你的代码将被嵌在这里 */ 输入样例: 2 1 4 5 3 -1 输出样例: 5 【代码】 int Length(LinkList L){int len; while(L->next!=NULL) { len++; L=L->next; } return len;}   二、求单链表元素序号 

本题要求实现一个函数,求带头结点的单链表中元素序号。

函数接口定义: int Locate ( LinkList L, ElemType e);

L是带头结点的单链表的头指针,e是要查找的元素值。如果e在单链表中存在,函数Locate返回其序号(序号从1开始);否则,返回0。

裁判测试程序样例: #include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;LinkList Create();/* 细节在此不表 */int Locate ( LinkList L, ElemType e);int main(){ElemType e;LinkList L = Create();scanf("%d",&e);printf("%dn", Locate(L,e));return 0;}/* 你的代码将被嵌在这里 */ 输入样例: 2 1 4 5 3 -15 输出样例: 4 【代码】 int Locate(LinkList L, ElemType e){ int i=1;LinkList p=L->next; if(p==NULL) return 0; while(p->next!=NULL) { if(p->next!=e&&p->next!=NULL) { p=p->next; i++; } } if(p->data==e) return i; else return 0;}

 

三、统计单链表元素出现次数

本题要求实现一个函数,统计带头结点的单链表中某个元素出现的次数。

函数接口定义: int GetCount ( LinkList L,ElemType e );

L是带头结点的单链表的头指针,e是要统计次数的元素值。如果e在单链表中存在,函数GetCount返回其出现的次数;否则,返回0。

裁判测试程序样例: #include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;LinkList Create();/* 细节在此不表 */int GetCount ( LinkList L, ElemType e);int main(){ElemType e;LinkList L = Create();scanf("%d",&e);printf("%dn", GetCount(L,e));return 0;}LinkList Create(){LinkList L,r,p;ElemType e;L = (LinkList)malloc(sizeof(LNode));L->next = NULL;r = L;scanf("%d",&e);while(e!=-1){p = (LinkList)malloc(sizeof(LNode));p->data = e;p->next = r->next;r->next = p;r = p;scanf("%d",&e);}return L;}/* 你的代码将被嵌在这里 */ 输入样例1: 2 2 4 2 3 -12 输出样例1: 3 【代码】 int GetCount ( LinkList L,ElemType e ){LinkList p=L->next; int cnt=0; if(!p) return 0; while(p) { if(p->data==e) { cnt++; } p=p->next; } return cnt;}

 

四、

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。