|  | 
 
| 
针对带头结点的单链表,试编写下列函数:
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);
 
 }
 
 
 | 
 |