为了账号安全,请及时绑定邮箱和手机立即绑定

数据结构,实现“查找倒数第m个元素”错误?

数据结构,实现“查找倒数第m个元素”错误?

C
qq_狂乱贵公子_0 2018-04-12 21:35:02
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct Node{    ElemType data;    struct Node *next;} LNode, *LinkList;void InitList(LinkList &L) //初始化线性表{    L = (LinkList)malloc(sizeof(LNode)); //创建头结点    L->next = NULL;    L->data = -1;}void Build(LinkList &L)//建立一个带头结点的单链表{    int n;    LinkList p, q;    p = L;    printf("请输入数据元素个数n:\n");    scanf("%d", &n);    printf("请输入%d个数据元素:\n", n);    while(n--)    {        q = (LinkList)malloc(sizeof(LNode));        scanf("%d", &q->data);        q->next = NULL;        p->next = q;        p = q;    }}int n = 0;//计数君nvoid count(LinkList L, int x){    Node *p;//定义一个指针节点p    p = L;//将p初值指向链表头节点    printf("\n请输入要找的元素值x:");    scanf("%d", &x);//输入需要查找的数    while(p!= NULL)//用while循环遍历单链表L    {        if(p->data == x)            n++;//正在遍历的数用if语句判断是否等于x,若等于,计数君n+1        p = p->next;//无论if语句中判断真或假,判断完就可以执行下一个数    }//(这里的p=p->next不可以在大括号外,否则遍历不能完全执行)    printf("表中含有%d个%d\n", n, x);//while循环执行完毕可以输出}int s=0,j=0;//定义总结点数为s。j记忆第几个节点void find(LinkList L,int m){ Node *p; p=L; printf("\n你要查找倒数第几个结点的值?"); scanf("%d",&m); while(p!=NULL) { p=p->next; s++; } while((p->next!=NULL)&&(j<s-m+1)) { p=p->next; j++; } printf("倒数第%d个元素的值为%d\n",m,p);  }int main(){    LinkList L;    InitList(L);    Build(L);    count(L,n); find(L,p);    return 0;}
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 925 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信