1 / 8
文档名称:

数据结构题(算法).doc

格式:doc   大小:63KB   页数:8
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构题(算法).doc

上传人:小健 2021/8/24 文件大小:63 KB

下载得到文件列表

数据结构题(算法).doc

文档介绍

文档介绍:算法题:一线性表e=(el,e2,e3 en),其逆线性表定义为e,=(en,en-i, e2,el)请设计一个算
法,将用顺序表表示的线性表逆置,要求逆线性表仍然占用原线性表空间。
void reverse (Linklist H)
{ PNode p,q;
p=H->link; /*p指向第一个数据结点*/
H->link=NULL; /*将原链表置为空表H*/
while (p)
{ q=p; p=p->link; q->link=H->link; /*将当前结点插到头结点的后面*/
H->link=q;
}
H | 129・| •斗^ |76」11&| .亠^ |45 | ^4^〔25」人| (a”
FP_* [7J3*〔25」+145」|18」+► |76 |討一*>|29」人|(b>
(a)为倒置前,(b)为倒置后
已知list是指向无头借点的线性链表的指针变量,写出删除该线性链表中从下标为i的(+1 个)借点开始的连续K个节点的算法
//删除连续节点方法
void delMNode(int startl, int k, PNode pn) {
int count;//统计当前第几个节点
PNode p, q;//临时节点q
count二1;//开始位置从1开始
P = pn;
(pUNULL)
{ if (count > startl-l&&k> 0) {//当前位置到起始位置的前1个的时候开始删除
q = p->next;
p->next 二 q->next;
free (q);
1<--;//还需要删除的数-1
}
else {
p = p->next;
count卄;//当前位置卄
}
}
6、 写一个算法从队列创建一个栈,使队列的头为栈顶,栈顶为队列的尾,算法的最后要求队列保持 不变。
7、 设有两个栈……
ttinclude〈stdio. h>
ttinclude〈stdlib. h>
ttinclude〈string. h>
typedef int DateType;
typedef struct tagStack
{
int max;//最大个数
int tNum;//当前栈里的位置
DateType *s;〃开辟的空间
};
typedef struet tagStack *PSStack;
//创建第一个空栈
PSStack createEmptyList(int m) {
PSStack head 二(PSStack)mdlloc(sizeof(struet tagStack));
if (head) {
head->s 二(DateType*)malloc(sizeof(DateType)*m);
if (head->s){
head->tNum = 0;
head~>max = m;
}
return head;
}
else {
printf (z,内存溢出!");
return 0;
}
}
〃创建第二个空栈
PSStack createEmptySecondList( PSStack headl){
PSStack head = (PSStack)malloc(si