|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
针对带头结点的单链表,试编写下列函数:
(a)定位函数:在单链表中寻找给定值的结点。若找到,则返回该结点的地址(返回等于给定值的第一个结点的位序即可,并非实际地址),否则返回空。
(b)统计函数:统计单链表中等于给定值e的元素个数。
在主函数当中按照以下步骤进行测试
输入链表结点个数->输入数值->输出链表->定位某个元素->输入数值e->统计链表中值为e的结点个数
【输入形式】
6 // 初始结点个数
4 2 1 6 2 5 //输入6个数值
7 //定位元素7
2 // 统计元素值为2的结点个数
【输出形式】
4 2 1 6 2 5
error
2
代码如下,不清楚为什么报错
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int date;
struct LNode *next;
} LinkNode;
void CreatListF(LinkNode *L)
{
int n;
int m;
LinkNode *s;
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
scanf("%d", &n);
int a[n];
for(int j=0;j<n;j++){
scanf("%d",&m);
a[j]=m;
}
for (int i = 0; i < n; i++)
{
s = (LinkNode *)malloc(sizeof(LinkNode));
s->date = a[i];
s->next = L->next;
L->next = s;
}
}
void DispList(LinkNode *L){
LinkNode *s=L->next;
while (s!=NULL)
{
printf("%d ",s->date); // 此处报错,不清楚为什么,具体应该怎么改呀,求求了,错误提示只说出现异常
s=s->next;
}
printf("\n");
}
int LocateElem(LinkNode *L){
int i=1;
int e;
scanf("%d",&e);
LinkNode *p=L->next;
while (p!=NULL&&p->date!=e)
{
p=p->next;
i++;
}
if(p==NULL){
printf("error");
}
else {
return(i);
}
}
int Count(LinkNode *L)
{
int cnt = 0;
int e;
scanf("%d",&e);
LinkNode *p=L->next;
while (p)
{
if(p->date==e)
cnt++;
p=p->next;
}
printf("%d", cnt);
return cnt;
}
int main(){
LinkNode L;
CreatListF(&L);
DispList(&L);
LocateElem(&L);
Count(&L);
}
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int date;
struct LNode *next;
} LinkNode;
void CreatListF(LinkNode *L)
{
LinkNode *s, *tmp;
L->date = 7;
L->next = NULL;
tmp = L;
int n;
scanf("%d", &n);
int a[n];
for(int i=0; i<n; i++){
scanf("%d",&a[i]);
}
for (int i = 0; i < n; i++)
{
s = (LinkNode *)malloc(sizeof(LinkNode));
s->date = a[i];
s->next = NULL;
tmp->next = s;
tmp = s;
}
}
void DispList(LinkNode *L){
LinkNode *tmp=L;
while (tmp!=NULL)
{
printf("%d ",tmp->date);
tmp=tmp->next;
}
printf("\n");
}
int main(){
LinkNode L;
CreatListF(&L);
DispList(&L);
// LocateElem(&L);
//Count(&L);
}
|
|