问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中的数据结构问题

发布网友 发布时间:2022-04-30 08:32

我来回答

3个回答

热心网友 时间:2022-06-19 20:31

程序基本上是不错。
你的思路也是对的。
只是算法上有点不清楚!
应该是先把字符,入队和入栈;然后再把出栈的字符

出队的字符进行比较,如果完全一致,就说明是匹配的。
只需要把函数compare
调整一下即可。
调整如下,请看注释。
#include
#include
#include
#include
#define
MAXSIZE
100
typedef
char
DataType;
typedef
struct{
DataType
data[MAXSIZE];
int
top;
}SeqStack,*PSeqStack;
typedef
struct{
DataType
data[MAXSIZE];
int
front,rear;
}SeqQueue,*PSeqQueue;
PSeqStack
Init_SeqStack(void)
{
PSeqStack
S;
S=(PSeqStack)malloc(sizeof(SeqStack));
if(S)
S->top=-1;
return
S;
}
char
Push_SeqStack(PSeqStack
S,DataType
x)
{
if
(S->top==MAXSIZE-1)
return
0;
else
{
S->top++;
S->data[S->top]=x;
return
1;
}
}
char
Empty_SeqStack(PSeqStack
S)
{
if(S->top==-1)
return
1;
else
return
0;
}
char
Pop_SeqStack(PSeqStack
S,DataType
*x)
{
if(Empty_SeqStack(S))
return
0;
else
{
*x=S->data[S->top];
S->top--;
return
-1;
}
}
PSeqQueue
Init_SeqQueue()
{
PSeqQueue
Q;
Q=(PSeqQueue)malloc(sizeof(SeqQueue));
if(Q)
{
Q->front=0;
Q->rear=0;
}
return
Q;
}
char
Empty_SeqQueue(PSeqQueue
Q)
{
if(Q
&&
Q->front==Q->rear)
return
(1);
else
return
(0);
}
char
In_SeqQueue(PSeqQueue
Q,DataType
x)
{
if((Q->rear+1)%MAXSIZE==Q->front)
{
printf("队满");
return
-1;
}
else
{
Q->rear=(Q->rear+1)%MAXSIZE;
Q->data[Q->rear]=x;
return
1;
}
}
char
Out_SeqQueue(PSeqQueue
Q,DataType
*x)
{
if(Empty_SeqQueue(Q))
{
printf("队空");
return
-1;
}
else
{
Q->front=(Q->front+1)%MAXSIZE;
*x=Q->data[Q->front];
return
1;
}
}
int
compare(char
ch)
{
PSeqStack
S;
char
ch1;
PSeqQueue
Q;
char
ch2;
S=Init_SeqStack();
//初始化
Q=Init_SeqQueue();//初始化
do
{
Push_SeqStack(S,ch);
//入栈
In_SeqQueue(Q,ch);//入队
}while((ch=getchar())!='@');
while(1)
//比较出队和出栈
{
if(Empty_SeqStack(S)==1)
//栈空,则退出循环
break;
Pop_SeqStack(S,&ch1);
//栈不为空,出栈操作,出栈到ch1;
if(Empty_SeqQueue(Q)==1)
//队空,则退出循环
break;
Out_SeqQueue(Q,&ch2);
//队不为空,出队操作,则出队到ch2;
if(ch1
!=
ch2)
//比较,如果不相等,则退出
break;
}
if(ch1==ch2)//比较最后一次的结果
{
printf("匹配");
}
else
{
printf("不匹配");
}
return
0;
}
void
main()
{
char
a;
printf("请输入字符串\n");
scanf("%c",&a);
compare(a);
}

热心网友 时间:2022-06-19 20:31

//既然是算法
就不用源码了
具体看注释
typedef
int
datatype;
typedef
struct
queuenode
{
datatype
data;
struct
queuenode
*next;
}queuenode;
//以上是结点类型的定义
typedef
struct
{
queuenode
rear;
}linkqueue;
//只设一个指向队尾元素的指针
void
initqueue(
linkqueue
&q)
{
//置空队:就是使头结点成为队尾元素
q.rear=(queuenode*)malloc(sizeof(queuenode))
queuenode*
s;
q->rear
=
q->rear->next;//将队尾指针指向头结点
while(q->rear!=q->rear->next)
//当队列非空,将队中元素逐个出队
{
s=q->rear->next;
q->rear->next=s->next;
free(s);
}
//回收结点空间
}
int
emptyqueue(
linkqueue
&q)
{
//判队空
//当头结点的next指针指向自己时为空队
return
q->rear->next->next==q->rear->next;
}
void
enqueue(
linkqueue
&q,
datatype
x)
{
//入队
//也就是在尾结点处插入元素
queuenode
*p=(queuenode
*)
malloc
(sizeof(queuenode));//申请新结点
p->data=x;
p->next=q->rear->next;//初始化新结点并链入
q-rear->next=p;
q->rear=p;//将尾指针移至新结点
}
datatype
dequeue(
linkqueue
&q,datatype
&x)
{
//出队,把头结点之后的元素摘下
datatype
t;
queuenode
*p;
if(emptyqueue(
q
))
error("queue
underflow");
p=q->rear->next->next;
//p指向将要摘下的结点
x=p->data;
//保存结点中数据
if
(p==q->rear)
{
//当队列中只有一个结点时,p结点出队后,要将队尾指针指向头结点
q->rear
=
q->rear->next;
q->rear->next=p->next;
}
else
q->rear->next->next=p->next;//摘下结点p
free(p);//释放被删结点
return
x;
}

热心网友 时间:2022-06-19 20:32

//-------------------------------
//1、
void
main()
{
//
char?字符串?你确信?
char
a;
printf("请输入字符串");
scanf("%c",&a);
compare(a);
}
//-------------------------------
//
2、
int
compare(char
ch)
{
PSeqStack
S;
char
ch1;
S=Init_SeqStack();
Push_SeqStack(S,ch);
//
ch=getchar()?
难道不是ch1=getchar()?下面ch2哪里也是一样
while((ch=getchar())!='@')
{
if(Empty_SeqStack(S))
return
0;
Pop_SeqStack(S,&ch1);
}
PSeqQueue
Q;
char
ch2;
Q=Init_SeqQueue();
In_SeqQueue(Q,ch);
while((ch=getchar())!='@')
{
if(Empty_SeqQueue(Q))
return
0;
Out_SeqQueue(Q,&ch2);
}
strcmp(&ch1,
&ch2);
if(ch1==ch2)
{
printf("匹配");
}
else
{
printf("不匹配");
}
}
C语言数据结构类型定义的问题

在C语言中,结构体struct指的是一种数据结构,是C语言中聚合数据类型aggregate data type的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员member,且这些成员可以为不同的类型,成员一般用名字访问。

C语言版的数据结构问题:数据结构和数据类型的关系?

数据结构 用 struct 定义 比如: struct A {int a, char b, A *p} *pA;那么A属于一个数据结构,a,b,p都属于数据元素。A的初始大小是四个字节,既元素最大的一个的空间。。。里面的成员同时存在,各自有各自的地址,互不干扰。既pA->a,pA->b,pA->p是可以同时存在滴。数据类型 用...

关于数据结构的问题,用C语言描述

一、数据结构的章节结构及重点构成数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。对于绝大多数的学校而言,“外排,文件,动态存储分配”三章基本上是不考的,在大多数高校的计算机本科教学过程中,这三章也是基本上不作讲授的。所以,...

数据结构问题。。。c语言

图二那句void printN(int n)叫做函数申明。main是入口函数,调用printN这个函数。所以,只要确保printN定义在main函数之前,或者是在main调用之前申明。都可以。所以,你可以排成:1、include <stdio.h> void printN(int n){。。。}//把代码放在main前面就不需要申明语句。int main(){ 。。p...

数据结构(C语言版),求高手解决。。

1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

C语言数据结构问题

即high=mid-1=6。这时有mid=(5+6)/2=5,又因为47<56,需要修改low,使low=6。这时有low=high=6,mid=(6+6)/2=6,有list[mid].key==x.key。所以查找成功。如果下界指针low>上界指针high,则表示表中没有与关键字相等的元素,查找失败。希望对你有帮助!

C语言数据结构的一个基本问题

1 int read_2D_Array(int **array, int i, int j, int column)2 { //i row j column ,总行数为column 3 return((*(int*)array + i*column + j));4 } 以上函数的参数第一行的int **array是函数参数这个参数说明该函数参数列表一接收的数据类型为int ** 型的变量 ...

C语言问题(数据结构)

LNode *p=L->next 定义一个结构体指针p,使其指向L->next中记录的地址,假设L->next中记录的地址为0xA,此时p中的内容就是0xA。注意,这一行为是拷贝,即将L->next中的内容拷贝到p中;L->next=NULL 令L->next=NULL,此时L->next中记录的地址变为0x0,但这一操作并不影响到指针p,p中...

关于数据结构(C语言)的几个题

最多比较次数参考严蔚敏《数据结构》第九章 查找 220页。5.例如图中这棵树,假设i=2,2i=4不大于n,2i+1=5大于n,所以2这个结点没有右子树。6.顺序栈的类型定义:typedef struct{ char *base; //也可用ElemType,只要定义了就行 char *top; int stacksize;}SqStackTp; //...

数据结构的习题(C语言版)

第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。第二个问题...

c语言的数据结构是什么 数据结构的问题 数据结构c语言耿国华 数据结构与c语言有什么联系 不会c语言能学数据结构吗 数据结构用c语言描述 数据结构c语言版难吗 c语言数据结构与算法 数据结构c语言第二版
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
形容饭店香气诱人的词句 我跟平安易贷贷款两万还款期是一年,我一年的利息是多少,知道的帮个忙... 装三聚氰胺的袋子有毒吗 手机微信后台为什么收不到消息? 患有类风湿性关节炎的人爱睡觉,正常吗 快乐大本营20150117谢娜穿的运动鞋是什么牌子的 谢娜在15年3月14号快乐大本营穿的是什么白色的运动鞋 偶像来了谢娜穿的运动鞋是 快乐大本营2016年9月17日那期,谢娜穿的白色运动鞋是什么牌子 20131019快乐大本营谢娜穿运动鞋是什么牌子的?可以附照片吗。。。_百度... 没错,又是我,又来求高清原图了...小鹿的这张高清原图? C程序数据结构线性链表 排序sort(面试题 填空题 )自己做了一部分,后面不会做 前面的还不知对否 oppo手机屏幕没事 触屏失灵怎么办 oppo手机触屏失灵输不了密码 辩论会善意的谎言反方资料 “善意的谎言”辩论会反方 辩论赛:善意的谎言反方 善意的谎言与诚实辩论赛辩词 列举善意的谎言辩论会反方问题有哪些? 急急急!!!洗衣机进水了,不能正常工作了 洗衣机操作按钮进水了怎么办 洗衣机开关进水,受潮,要怎么办? 洗衣机按键板进水的怎么办?有木有人会修理 小天鹅洗衣机面板上撒上水了,怎么办呢? 海尔洗衣机液晶显示屏进水了怎么办? 急急急! 京瓷6525老出状态确认 京瓷6525复印机系统错误,不能使用,代码F245 京瓷6525复印机开机一直预热,已经好几个小时了。 发明专利最快申请需要多少时间 爱迪生传的爱迪生发明创造年表 有道C语言的面试题: 他是没错就是我表情包 没错,又是那个我!求图,四月是你的谎言图,和我发的差不多就行,要清晰 C和数据结构就业问题 大连径点科技,笔试通过了,明天要我去面试,软件开发C语言的,急求大师提示都问什么题?在线等!!!!! 数据结构(C语言),请救高手,万分感谢. 女生发破涕为笑的表情一般怎么回复? C语言数据结构问题 关于C语言数据结构的问题 C语言、数据结构。 28号在抖音上买的衣服到现在没到货怎么查? c语言求助,关于数据结构方面 请问欄这个表情是“我也是”还是“你好”的意思? 想找一个表情包,就是一些人总发“哦”,想那个表情包上写着再发“哦”我就怎么样的。 手机投屏看电视怎么才可以把微信声音抖音声音关掉 跪求一篇高三后的学习计划书...1000字左右 学习计划800字 高三最后一百天学习计划的作文,谢谢… 高三学习的计划 如何避免装修安全隐患