函数:求有头结点单链表长度

问题描述】编写算法函数:求有头结点单链表长度。

【输入形式】输入若干个整数,以空格作为分隔符,用以创建单链表。

【输出形式】输出单链表长度。

【样例输入】

5 6 7 2 1
【样例输出】

5

/*
* 函数题:求有头结点单链表长度
*/
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
typedef int ElemType; /*定义表元素的类型*/
typedef struct LNode /*线性表的单链表存储*/
{
ElemType data;
struct LNode *next;
} LNode,*LinkList;
/*创建单链表*/
int CreateList(LinkList *head);

/*函数定义*/
int getLength(LinkList head);

/*你的代码将写在此处*/

int CreateList(LinkList *head)
{
LNode *p,*q;
int e;
*head=(LinkList)malloc(sizeof(LNode));
if (!*head)
return ERROR;
(*head)->next=NULL;
p=*head;
while(scanf("%d",&e)==1)
{
q=(LNode *)malloc(sizeof(LNode));
if (!q)
return ERROR;
q->data=e;
q->next=NULL;
p->next=q;
p=q;
}
return OK;
}/*CreateList*/

int main()
{
LinkList L=NULL;
CreateList(&L);
printf("%d",getLength(L));
return 0;
}

int CreateList(LinkList *head)代码的while循环中,加入了一句话:

if (getchar() == '\n') break; // 输入换行时可跳出循环

新写的int getLength(LinkList head)代码如下:

完整代码为:

#include<stdio.h>

#include<malloc.h>

#define ERROR 0

#define OK 1

typedef int ElemType; /*定义表元素的类型*/

typedef struct LNode /*线性表的单链表存储*/

{

    ElemType data;

    struct LNode *next;

}LNode, *LinkList;

/*创建单链表*/

int CreateList(LinkList *head);

/*函数定义*/

int getLength(LinkList head);

/*你的代码将写在此处*/

int CreateList(LinkList *head)

{

    LNode *p, *q;

    int e;

    *head = (LinkList)malloc(sizeof(LNode));

    if (!*head)

        return ERROR;

    (*head)->next = NULL;

    p = *head;

    while (scanf("%d", &e) == 1)

    {

        if (getchar() == '\n')

            break; // 回车时跳出循环

        q = (LNode *)malloc(sizeof(LNode));

        if (!q)

            return ERROR;

        q->data = e;

        q->next = NULL;

        p->next = q;

        p = q;

    }

    return OK;

}/*CreateList*/

int getLength(LinkList head)

{

    LNode *p = head;

    int len = 0;

    while (p != NULL)

    {

        ++len;

        p = p->next;

    }

    return len;

}

int main()

{

    LinkList L = NULL;

    CreateList(&L);

    printf("%d\n", getLength(L));

    return 0;

}

gcc编译通过,望采纳~

温馨提示:内容为网友见解,仅供参考
无其他回答

函数:求有头结点单链表长度
if (getchar() == '\\n') break; \/\/ 输入换行时可跳出循环 新写的int getLength(LinkList head)代码如下:完整代码为:include<stdio.h> include<malloc.h> define ERROR 0 define OK 1 typedef int ElemType; \/*定义表元素的类型*\/ typedef struct LNode \/*线性表的单链表存储*\/ { ElemTyp...

求:编写程序:带头结点单链表的长度,并将长度写入头结点的数据域中...
int lslen(List ls){int l=0;List p=ls;while(p->next){l++;p=p->next;} ls.data=j;}

试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。下面各...
intListLength_L(LinkList &L){int i=0;\/\/i存储链表长度,初始为0LinkList p=L;\/\/p为链表的指针,初始为头指针,指向头结点if(p) p=p-next;\/\/如果p指向的头结点不为空,p指向带数据的第一个结点while(p){\/\/如果p非空,i长度加1,且指向下一个结点p=p->next;i++;} return i;\/\/...

求单链表的长度
int data;struct node *next;} ;创建单链表后,最后一个结点的next是NULL,据此来遍历表,获得长度。void get_len( struct node *head ){ struct node *p=head->next ;int len=0;while ( p ){ len++;p=p->next;} head->data=len ; \/\/存储长度到头结点 } ...

试写一算法在带头结点的单链表结构上实现线性表操作LENGTH(L)_百度知 ...
int length_l(linklist head){ linklist p=head;int i=0;while(p!=NULL){ i++;p=p->next;} return i;} 参考书上的正确答案,我也在学数据结构,加油啊!

带头结点的单链表,其长度存放在头结点的数据域中,设计一算法求倒数第...
设单链表的长度为n,要查找表中第i个结点(即你要确定的第K个位置),仅当1≦i≦n时,i的值是合法的。但有时需要找头结点的位置,故我们将头结点看做是第0 个结点,其算法如下:Listnode * getnode(linklist head , int i){ int j;listnode * p;p=head;j=0;while(p–>next && j<I...

线性链表的带头结点的单链线性表
);L->next = NULL; \/\/ 先建立一个带头结点的单链表for (i = n; i > 0; --i) {p = (LinkList) malloc (sizeof (LNode)); \/\/ 生成新结点scanf(&p->data); \/\/ 输入元素值p->next = L->next; L->next = p; \/\/ 插入到表头}} \/\/ CreateList_L算法的时间复杂度为:...

编程完成一个带头结点的单链表建立,实现初始化、求表长、取元素、按值...
return 0;q=p->next;p->next=q->next;e=q->a;free(q);} void main(){ int e,i,n;List l1;struct node *p;printf("请输入要创建链表的大小:\\n");scanf("%d",&n);printf("请向链表中输入%d个整型数据:\\n",n);createList(l1,n);printf("当前链表为:\\n");...

已知head指向一个带头结点的单词链表,链表中每个结点包含数据long和指向...
\/* 获取单链表长度 *\/status listInsertNode (linkList L, int i, elemType e);\/* 单链表指定位置插入新元素 *\/status listPrint (linkList L);\/* 输出链表 *\/status listReverse (linkList L);\/* 逆置链表 *\/\/*** 以上为函数声明 ***\/\/* 初始化 *\/\/* 操作结果:构造一个空的单链表...

统计出带头结点单链表中值等于给定值x的结点个数( C语言)
int Search(struct Node *pHead , int value){ struct Node *p=pHead;int index=0;while(p){ if(p->num== value){ index++;} p=p->next;} return index;}

相似回答
大家正在搜