数据结构(c语言版)题目求答案

1.已知一个带头结点的单链表L,结点结构为typedefstructNode{ElemTypedata;//数据域structNode*next;//指针域}*Link;... 1.已知一个带头结点的单链表L,结点结构为

typedef struct Node {

ElemType data; //数据域

struct Node *next; //指针域

} *Link;

设只给出链表头指针L和一个正整数k。试设计一个尽可能高效的算法Search(L, k),用于查找L中倒数第k个位置上的结点。

¨3.28② 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾结点(注意不设头指针),试编写相应的队列初始化、入队和出队的算法。

¨3.31③ 顺读和逆读相同的字符序列称为回文,例如“abcba”是回文,而“ababab”不是回文。试编写一个算法,判别读入的一个以“#”为结束符的字符序列是否为回文
顺便想知道新建链表有哪些方法,个人感觉好像不只一种,有点迷惑
展开
 我来答
蕾蕾的天下
推荐于2016-12-01 · 超过13用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:34.6万
展开全部
3.28
void InitCiQueue(CiQueue&Q)//初始化循环链表表示的队列Q
{
Q=(CiLNode*)malloc(sizeof(CiLNode));
Q->next=Q;
}//InitCiQueue
voidEnCiQueue(CiQueue&Q,int x)//把元素x插入循环列表表示的队列Q,Q指向队尾元素,Q->next指向头结点,Q->next->next指向队尾元素
{
p=(CiLNode*)malloc(sizeof(CiLNode));
p->data=x;
p->next=Q->next;//直接把p加在Q的后面
Q->next=p;
Q=p;//修改尾指针
}
Status DeCiQueue(CiQueue&Q,int x)//从循环链表表示的队列Q头部删除元素x
{
if(Q==Q->next)return INFEASIBLE;//队列已空
p=Q->next->next;
x=p->data;
Q->next->next=p->next;
free(p);
rturn OK;
}//DeCiqueue

3.31

int Palindrome_Test()
{
InitStack(S);InitQueue(Q);
while((c=getchar())!='@')
{
Push(S,c);EnQueue(Q,c);
}
while(!StackEmpty(S))
{
pop(S,a);DeQueue(Q,b);
if(a!=b)return ERROR;
}
return OK;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式