-->
当前位置:首页 > 题库 > 正文内容

函数题:使用头插法将元素插入到链表

Luz3年前 (2022-09-17)题库662
本题要求实现一个函数CreateList(),此函数采用头插法将整数插入到链表中。
可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。
### 函数接口定义:
c++
函数接口描述如下:
Status CreateList(LinkList L,int n);


参数说明:其中 L 和 n 都是用户传入的参数。 L 是需要操作的单链表; n 是需要插入的元素个数,元素由用户输入。如果操作成功,函数须返回OK(1)。

### 裁判测试程序样例:
c
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <stdlib.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define OVERFLOW -2

#ifndef NULL
#define NULL ((void*)0)
#endif

typedef int Status;

/* 单链表元素类型的定义 */
typedef int ElemType;
/* 单链表结点结构体的定义 */
typedef struct LNode
{
ElemType data;
struct LNode * next;
}LNode;
/*定义了一个LinkList类型*/
typedef LNode* LinkList; //指向单链表结点的指针

Status InitList_L(LinkList *LL)
{
(*LL) = (LinkList)malloc(sizeof(LNode));
if(!(*LL))
exit(OVERFLOW);

(*LL)->next = NULL;

return OK;
}

Status ListEmpty_L(LinkList L)
{
if(L!=NULL && L->next==NULL) //链表存在且只有头结点
return TRUE;
else
return FALSE;
}

int ListLength_L(LinkList L){
LNode * p;//LinkList p;
int i;
i = 0;
if(L)
{
p = L->next;//将头结点的next值赋给p;
while(p)
{
i++;
p = p->next;
}
}
return i;
}

Status InserHeadList_L(LinkList L,ElemType e){
LNode * q;
//生成新结点,并给新结点数据赋值
q = (LNode *)malloc(sizeof(LNode));
q->data = e;
//q->next = NULL;
//将新结点插入到链表的首部
q->next = L->next;
L->next = q;
}

Status printList_L(LinkList L){//循环输出链表中的所有数据
LNode * p;
if(L){
p = L->next;//将头结点的next值赋给p;
while(p){
printf("%d ",p->data);
p = p->next;
}
}
printf("\n");
return OK;
}

int main(){
LinkList L,Q,P;
//LNode * L;
int i;
ElemType e;

InitList_L(&L);

L->next = (LinkList)malloc(sizeof(LNode));
L->next->data = 10;
L->next->next = NULL;

ListEmpty_L(L) ? printf(" L 为空!!\n") : printf(" L 不为空!\n");
printf("表中有%d个元素。\n",ListLength_L(L));

InserHeadList_L(L,20);
printf("表中有%d个元素。\n",ListLength_L(L));

CreateList_F1(L,3);
printList_L(L);
return 0;
}


/* 请在这里填写答案 */


### 输入样例:

在这里给出一组输入。例如:

in
3 33 333


### 输出样例:

在这里给出相应的输出。例如:

out
L 不为空!
表中有1个元素。
表中有2个元素。
请输入3个数据(用空格分割):
333 33 3 20 10








答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。