P17 2.14
试写一算法在带头结点的单链表结构上实现线性表操作LENGTH(L)。
代码实现:
int LENGTH(LinkList L) {
LNode *p = L;
int i = -1; //求表长不包含头结点
while (p) {
i++;
p = p->next;
}
return i;
}
完整代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkList;
LinkList Create_list(LinkList &L) { //尾插法创建链表
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode *p, *r;
r = L;
int x;
scanf("%d", &x);
while (x != 9999) { //输入9999表示停止输入
p = (LNode *)malloc(sizeof(LNode));
p->data = x;
r->next = p;
r = p;
scanf("%d", &x);
}
r->next = NULL;
return L;
}
int LENGTH(LinkList L) {
LNode *p = L;
int i = -1; //求表长不包含头结点
while (p) {
i++;
p = p->next;
}
return i;
}
int main() {
LinkList L;
printf("请输入链表的值:\n");
Create_list(L);
printf("输出链表:\n");
LNode *p = L->next;
while (p) {
printf("%d\t", p->data);
p = p->next;
}
printf("\n");
printf("表长为:%d\n", LENGTH(L));
return 0;
}