请问:为什么运行不了呀?代码问题是:
统计单链表中偶数位序的元素和并输出元素值。
#include
#include
#include
using namespace std;
typedef struct Node
{
int data;
struct Node*next;
}Node,*LinkList;
void Initlist(LinkList &L)
{
L=(Node*)malloc(sizeof(Node));
L->next=NULL;
}
void Creatlist(LinkList &L,int a[100],int n)
{
L= (Node *)malloc(sizeof(Node));
L->next = NULL;
LinkList p;
for (int i = 0; i < n; i++) {
p = (LinkList )malloc(sizeof(LinkList));
p->data = a[i];
p->next = L->next;
L->next=p;
}
}
int deleteList (LinkList &L,int m)
{
if(m<1)
{
printf("error\n");
return 0;
}
int i=0;
LinkList q,p;
while(q!=NULL&&inext;
}
p=q->next;
q->next=p->next;
free(p);
return 1;
}
void OutputList(LinkList &L)
{
LinkList s;
s=L->next;
while(s)
{
cout<data<<' ';
s=s->next;
}
}
int main()
{
int n,m,a[100];
cin>>n;
LinkList L;
Initlist(L);
Creatlist(L,a,n);
cin>>m;
if(deleteList(L,m))
OutputList(L);
if(L->next-NULL)
cout<<"null";
return 0;
}
在做逆序输出以及判断回文数题目之前,先做下这道题,如何计算用户输入的数是几位数呢?
思路:假设用户输入的数据是四位数1234
。
我们知道,1234%10=4
,我们就取到了用户输入数值中末位数字4
这个数字,这时候我们就知道用户输入的数至少是个位数
了(废话)。
我们还知道,1234/10=123
,我们可以利用他把用户输入的数值更新,更新之后,猜到没,我们再继续走步骤一,如果走得动,我们又知道用户输入的数值至少是两位数
了。
就这样再更新成12
,取得末位数字2
,我们就知道用户输入数值至少为三位数
了,再更新成1
,取得末位数字1
,我们就知道用户输入的数值至少为四位数
了这时候1/10=0
,完犊子,更新不了了,停止,我们就知道用户输入的数值,最终是四位数
。
具体代码如下:
#include <stdio.h>
int main(void)
{
int number = 0; //用来存放用户输入的数值
int count = 0;//用来记录我们猜测的数值位数。
printf("请输入一个数,我来判断你输入的是几位数:\n");
scanf("%d", &number);
while (number != 0)//当number/10等于0时
{
number = number / 10;//更新number
count++;//先更新在记录,先记录在更新的话记录的是前一次数值的位数。
}
printf("您所输入的数是%d位数", count);
return 0;
}
请输入一个数,我来判断你输入的是几位数:
56654523
您所输入的数是8位数