带头结点单链表,好难啊上机作业,有错误求助!
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#pragma warning(disable:4996)
typedef struct node
{
int data;
struct node *next;
}slink;
/*初始化*/
int initList(slink *L)
{
L = (slink *)malloc(sizeof(node));
L->next = NULL;
printf("链表初始化成功\n");
return 1;
}
/*建立*/
void creaselink(slink *L, int n)
{
int i = 0;
slink *p, *s;
L = (slink*)malloc(sizeof(node));
L->next = NULL;
p = L;
while (i < n)
{
s = (slink*)malloc(sizeof(node));
scanf("%d", &s->data);
p->next = s;
p = s;
i++;
}
p->next = NULL;
}
/*定位*/
int locate(slink *L, int x)
{
printf("定位函数:\n");
int i = 0;
slink *p = L->next;
while (p != NULL && p->data != x)
{
p = p->next;
i++;
}
if (p != NULL)return i;
else return 0;
}
/*统计*/
int statistics(slink* L, int e)
{
printf("统计函数:\n");
int i = 0;
slink *p = L->next;
while (p != NULL)
{
p = p->next;
if (p->data == e)
i++;
}
return i;
}
int main()
{
slink L;
initList(&L);
int x, e, n;
int i;
printf("数据个数:");
scanf("%d", &n);
creaselink(&L, n);
printf("输入要定位的数值:\n");
scanf("%d", &x);
i = locate(&L, x);
printf("%d\n", i);
printf("输入要统计的e:\n");
scanf("%d", &e);
printf("e的个数为%d", statistics(&L, e));
return 0;
}