当前位置:首页 » 编程语言 » c语言值逆置
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言值逆置

发布时间: 2022-02-02 03:21:33

㈠ 如何用c语言实现单链表的逆置

#include<iostream>
using namespace std;
struct Number //链表的类型
{
char data; //链表当前结点的值
struct Number *next; //链表当前结点指向下一结点的指针
}*number;
void CreateList(Number *&L) //创建链表
{
Number *s,*r; //定义两个链表类型的临时指针
char x; //定义一个临时字符变量
L=(Number *)malloc(sizeof(Number)); //为头结点开辟空间
L->next=NULL; //此时头结点的后继指针和前驱指针赋值为空
r=L; //是r指针指向头结点
x=getchar(); //用x接受一个从键盘输入的字符
while(x!='\n') //控制当输入回车键时结束
{
s=(Number *)malloc(sizeof(Number)); //开辟下一结点的空间
s->data=x;
r->next=s; //r的后继指针指向s
r=s; //是s指向r
x=getchar(); //用x接受一个从键盘输入的字符
}
r->next=NULL; //当创建结束时,r的后继指针为空
}
void PrintList(Number *L) //输出链表
{
Number *p=L->next; //定义一个临时指针并指向链表的第一个结点
while(p!=NULL) //判断结点是否为空,空就结束
{
cout<<p->data; //输出结点的值
p=p->next; //指向下一个结点
}
cout<<endl; //换行
}
void InverseList(Number *L) //链表的逆置
{
Number *p=L->next,*q=L->next;
q=q->next;
p->next=NULL;
p=q;
while(p!=NULL)
{
q=q->next;
p->next=L->next;
L->next=p;
p=q;
}
}
void DestroyList(Number *&L) //销毁链表
{
Number *p=L,*q=p->next;
while(q!=NULL)
{
free(p); //释放p的空间
p=q;
q=p->next;
}
cout<<"释放链表"<<endl;
}
int main()
{
cout<<"请输入一个链表:";
CreateList(number); //调用创建链表
cout<<"********************************************************************************";
cout<<"输入的链表为:"<<endl;
PrintList(number); //调用输出链表
InverseList(number); //调用逆置链表
cout<<"此链表的逆置为:"<<endl;
PrintList(number); //调用输出链表
cout<<"********************************************************************************";
DestroyList(number); //调用销毁链表的函数
return 0;
}

㈡ 请教c语言链表逆置问题

Status reverse(LinkList &L) {
//L指向单链表的表头,算法将单链表逆转,L指向逆转后的表头。
if (L==NULL ) return OK;
else if (L->next ==NULL) return OK;
p=L; q = p->next;
L->next = NULL;
while (q!=NULL){
Lnode * tem = q ->next;
q ->next = p;
p = q;
q = temp;
}
L = p;
return OK;
}
你看怎么样?

㈢ 在C语言中“%c%c\n”和“%d%d\n“分别说明什么。。。

%c%c 和%d%d 出现在输出语句中具有如下意义:

%c%c 表示输出两个字符数据,%d%d 表示输出两个十进制整型数据。

并且输出的数据是紧挨着的,如果想分开点,可以增加宽度,比如"%5d"就是按照5的宽度输出一个整型数据,或者在两个格式符中间加上空格,逗号,等其他字符也可以,比如"%d,%d"。

(3)c语言值逆置扩展阅读:

常用的有以下几种格式字符:

一、d格式字符。用来输出十进制整数。有以下几种用法:

1、%d,按整型数据的实际长度输出。

2、%md,m为指定的输出字段的宽度。

3、%ld,输出长整型数据。

二、o格式符,以八进制整型式输出整数。

三、x格式符,以十六进制数形式输出整数。

四、c格式符,用来输出一个字符。

㈣ 1.利用队列的基本操作实现栈的逆置 2.利用队列的基本操作取队尾元素的值(队列不变) 用c语言写这

队列是种先进先出的数据结构
而栈是种先进后出的数据结构
所以将一个栈中的数据弹出排入到队列
然后从队列中进行出队再压入栈即可完成栈的逆置
第二个可以设置一个队尾指针然后取出该指针指向的元素中的值而不删除该元素即可

如果代码不想自己写的话
我可以有偿代劳

㈤ 写C语言要求从键盘上输入一个3位的数值,并将其逆序输出

可以输入值的范围是0~32767
int main(){
int a,*p;
printf("\nPlease input the number:");
scanf("%d",&a);
while(a>0)
{
printf("%d",a%10);
a=a/10;
}
}

㈥ C语言:用栈来逆置一个单链表,哪位大神能给出下面代码的详细的解释谢谢

#include <stdio.h>
#include<stdlib.h>
#define stacksize 100
typedef int datatype;//这里所谓的datatype关键字是不存在的,所以这里用typedef (类型定义) 定义成int 型,意思是datatype 就是int
typedef struct
{
datatype data[stacksize];
int top;
}seqstack;//这里定义了栈(其实就是结构体,里面有个int型的数组和int型的成员),在下面有栈的一些运算,


typedef struct node
{
datatype data;
struct node *next;
}listnode;//这里定义了链表。int 型成员和 node * 指针



typedef listnode *linklist;//定义linklist指针,就是listnode 类型的指针
linklist h;
linklist p;
int x;


linklist creatlist(int n) //这里是创建链表
{
linklist h;
listnode *p1,*p2;
int i;
h=(linklist)malloc(sizeof(listnode));/*这里是为 h 这个结点(或者可称为结构体,它本来的面目),申请内存空间,大小就是(sizeof(listnode),就是结构体所占大小)*/


h->next=NULL; /*逆置单链表初始为空*/
p2=h;
printf("请输入链记录!: ");


for(i=0;i<n;i++)//这里就输入n个记录,比如1,2,3,4,5
{
p1=(linklist)malloc(sizeof(listnode));//同上
scanf("%d",&p1->data);//输入该节点中的数据成员data的值
p1->next=p2->next; /*将当前处理节点p插入到逆置L的表头*/
p2->next=p1;
p2=p1; /*p指向下一个待插入的节点*/
}
return (h);
}


void print(linklist h,int n)//将该链表打印出来
{
if(h==NULL)
printf("链表为空! ");
printf("这%d个链记录是: ",n);
p=h->next;
printf("%d",p->data);
x=1;
while(p->next!=NULL)
{
x++;
p=p->next;
printf("%4d",p->data);//这里就是P指针一直指向next, 循环打印,直到p=NULL..
if(!(x%10))
printf(" ");// - -这里应该是每打印10次就换行的意思。
}
}
datatype push(seqstack *s,int x) /*这里就是栈的操作,进栈,返回类型为datatype,实际上就是int,这里说下参数,第一个参数是指向栈的指针类型,第二个参数是你要进栈的值*/
{
if(s->top==stacksize-1)//超出栈的大小
printf("堆栈溢出! ");
else
s->data[++s->top]=x;
}
datatype pop(seqstack *s) //和上面相同,这个是出栈,return 栈的元素的值
{
if(s->top==-1)
printf("堆栈为空! ");
else
return (s->data[s->top--]);
}
datatype deleted(linklist h)//删除链表结点的值,并将该结点中data值放到temp
{
datatype temp;
linklist p;
p=h->next;
temp=(p->data);
h->next=p->next;
free(p);//这步重要!释放结点所占的空间
return (temp);
}
void invertedlist(linklist h,int n)//
{
seqstack s;
int i,j,temp;
s.top=-1;
for(i=0;i<n;i++)//说白了就是将链表的值依次进栈
{
temp=deleted(h);
push(&s,temp);
}
for(i=0;i<n;i++)//然后将各个值依次出栈
{
temp=pop(&s);
printf("%5d",temp);
if(!((i+1)%10))
printf(" ");
}
printf(" ");
}
main()
{
linklist h;
int n;
printf("请输入n的值: ");
scanf("%d",&n);
h=creatlist(n);
print(h,n);
printf(" ");
printf("经过逆置,链记录为: ");
invertedlist(h,n);
system("pause");
return 0;
}

最后总结,原理就是利用栈的先进后出的特性来实现逆置的。有什么不懂可以再提问。

㈦ C语言: 编写程序,实现一维数组中元素的逆置。

#include<stdio.h>
intmain(){
inti,t,n,a[10];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;}
for(i=0;i<n;i++)
printf("%d",a[i]);
return0;
}

//运行示例:

㈧ c语言逆序输出三位数

这个程序思路很简单,就是每次取a的最后一位输出,然后将a除以10
比如说123,123%10=3就能得到最后一位,然后输出3
再将123除以10得到12,12%10=2,输出2
再除以10取最后一位输出
.....
这样循环下去,就是输出321,其实也不一定要三位数

㈨ 数据结构(C语言)单链表的问题

/*
这是结果,需要的话给我个地址
------------------------
***建立含有n个数据元素的带头结点的单链表***
请输入n = 5
请输入第1个元素:1
请输入第2个元素:2
请输入第3个元素:3
请输入第4个元素:4
请输入第5个元素:5
依次输出该表中各元素的值:1 2 3 4 5
将单链表进行逆置运算:
依次输出逆置后表中各元素的值:5 4 3 2 1
Press any key to continue
------------------------------
*/

㈩ C语言结构体链表逆置中这个代码的while循环什么时候终止

尽管程序不全,没有看到pa变量的类型,但是,仍然可以判定当pa变量的值为0时while循环终止。
在c语言中,常量NULL的值就是0。也就是说,当pa的值是NULL时,循环就终止了。
有什么问题请留言