数据结构伪代码转化成为可执行源代码.docx

上传人:b****7 文档编号:10424348 上传时间:2023-02-11 格式:DOCX 页数:72 大小:28.52KB
下载 相关 举报
数据结构伪代码转化成为可执行源代码.docx_第1页
第1页 / 共72页
数据结构伪代码转化成为可执行源代码.docx_第2页
第2页 / 共72页
数据结构伪代码转化成为可执行源代码.docx_第3页
第3页 / 共72页
数据结构伪代码转化成为可执行源代码.docx_第4页
第4页 / 共72页
数据结构伪代码转化成为可执行源代码.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

数据结构伪代码转化成为可执行源代码.docx

《数据结构伪代码转化成为可执行源代码.docx》由会员分享,可在线阅读,更多相关《数据结构伪代码转化成为可执行源代码.docx(72页珍藏版)》请在冰豆网上搜索。

数据结构伪代码转化成为可执行源代码.docx

数据结构伪代码转化成为可执行源代码

数据结构伪代码转化为源代码

尊重原作者的劳动,我只是个学习者,见此文章,感觉很有用,愿与大家一起分享

-----XX文库:

桔紫蓝

*/--------------------------------------------------------------------------------------

*/出自:

编程中国?

?

*/时间:

2007-10-26?

?

编程论坛首发

*/声明:

尊重作者劳动,转载请保留本段文字

*/--------------------------------------------------------------------------------------

前言:

这些是前几年我在大专教书时,数据结构课程中给学生写的学习例程,对于初学者有一定帮助。

在此收集到一起,当个共享贴贡献给广大网友和编程爱好者。

一般程序都不难也不大,并且所有例程均有较详细注释,适合自学。

中间有一个“哈夫曼编码”,程序较大,希望能给大家一点启示。

以下所有程序均在VC++6.0开发环境中调试通过,运行正常。

有任何疑问可以“另外”发贴讨论。

更多内容请访问我的博客。

自认为本贴内容充实,对网友会所很大帮助,请版主或者管理员置顶加精,谢谢。

数据结构与算法基本程序目录

一、?

?

?

?

线性表及其操作

1、?

?

?

?

尾插法建立一个单链表,并按顺序输出

2、?

?

?

?

单链表的元素查找,按内容查找

3、?

?

?

?

元素插入操作

4、?

?

?

?

按内容元素删除操作

5、?

?

?

?

按位置删除元素

6、?

?

?

?

建立双向链表

7、?

?

?

?

单链表就地逆置

8、?

?

?

?

约瑟夫环问题

二、?

?

?

?

栈及其操作

1、?

?

?

?

建立堆栈

2、?

?

?

?

进栈与出栈

3、?

?

?

?

栈的应用,括号匹配

三、?

?

?

?

队及其操作

1、?

?

?

?

链队列的建立

2、?

?

?

?

入队和出队

3、?

?

?

?

循环队列建立

4、?

?

?

?

循环队列的入队和出队操作

四、?

?

?

?

串及其操作

1、?

?

?

?

串的朴素匹配

五、?

?

?

?

树(二叉树)及其操作

1、?

?

?

?

二叉排序树

2、?

?

?

?

哈夫曼编码

六、?

?

?

?

排序

1、?

?

?

?

冒泡排序

2、?

?

?

?

直接选择排序法

一、线性表及其操作

//Allcopyrightarepreservedbycobby

/*尾插法建立一个单链表,并按顺序输出*/

#defineNULL0?

?

?

?

?

?

?

?

?

?

?

?

/*宏定义*/

typedefstructnode?

?

?

?

?

?

?

?

/*定义结点类型的数据结构*/

{

?

?

?

?

charc;?

?

?

?

?

?

?

?

?

?

?

?

/*数据域,类型为字符型*/

?

?

?

?

structnode*next;?

?

?

?

/*指针域,类型为本结构体类型*/

}*L;?

?

?

?

?

?

?

?

?

?

?

?

/*类型重定义,即Node和*L和structnode等价*/

main()

{

?

?

?

?

Ll,p,q;?

?

?

?

?

?

?

?

/*用指针类型定义三个结点类型的指针*/

?

?

?

?

charch;

?

?

?

?

l=(L)malloc(sizeof(L));?

?

?

?

/*分配内存空间*/

?

?

?

?

l->c='\0';?

?

?

?

?

?

?

?

?

?

?

?

/*为头结点的数据域赋值,值为空*/

?

?

?

?

l->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*指明下一个结点目前不存在*/

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q为游动指针,链表结点的连结要用*/

?

?

?

?

printf("Inputacharacter:

\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

getchar();?

?

?

?

?

?

?

?

//此语句用来吸收键盘输入的回车符,没有其它含义

?

?

?

?

while(ch!

='!

')?

?

?

?

?

?

?

?

?

?

?

?

/*输入!

表示输入结束*/

?

?

?

?

{

?

?

?

?

?

?

?

?

p=(L)malloc(sizeof(L));?

?

?

?

/*为新输入的数据分配内存空间*/

?

?

?

?

?

?

?

?

p->c=ch;

?

?

?

?

?

?

?

?

p->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*新输入的结点在链表的最后,即它的后面没有其它元素*/

?

?

?

?

?

?

?

?

q->next=p;?

?

?

?

?

?

?

?

?

?

?

?

/*q用于将上一个元素链接至当前新元素*/

?

?

?

?

?

?

?

?

q=p;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q自己移到当前最后一个元素,以备继续链接所用*/

?

?

?

?

?

?

?

?

scanf("%c",&ch);

?

?

?

?

?

?

?

?

getchar();

?

?

?

?

}

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

}

//Allcopyrightarepreservedbycobby

/*单链表的元素查找,按内容查找*/

#defineNULL0?

?

?

?

?

?

?

?

?

?

?

?

/*宏定义*/

typedefstructnode?

?

?

?

?

?

?

?

/*定义结点类型的数据结构*/

{

?

?

?

?

charc;?

?

?

?

?

?

?

?

?

?

?

?

/*数据域,类型为字符型*/

?

?

?

?

structnode*next;?

?

?

?

/*指针域,类型为本结构体类型*/

}*L;?

?

?

?

?

?

?

?

?

?

?

?

/*类型重定义,即Node和*L和structnode等价*/

main()

{

?

?

?

?

Ll,p,q;?

?

?

?

?

?

?

?

/*用指针类型定义三个结点类型的指针*/

?

?

?

?

charch;

?

?

?

?

intn;

?

?

?

?

l=(L)malloc(sizeof(L));?

?

?

?

/*分配内存空间*/

?

?

?

?

l->c='\0';?

?

?

?

?

?

?

?

?

?

?

?

/*为头结点的数据域赋值,值为空*/

?

?

?

?

l->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*指明下一个结点目前不存在*/

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q为游动指针,链表结点的连结要用*/

?

?

?

?

printf("Inputacharacter:

\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

getchar();

?

?

?

?

while(ch!

='!

')?

?

?

?

?

?

?

?

?

?

?

?

/*输入!

表示输入结束*/

?

?

?

?

{

?

?

?

?

?

?

?

?

p=(L)malloc(sizeof(L));?

?

?

?

/*为新输入的数据分配内存空间*/

?

?

?

?

?

?

?

?

p->c=ch;

?

?

?

?

?

?

?

?

p->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*新输入的结点在链表的最后,即它的后面没有其它元素*/

?

?

?

?

?

?

?

?

q->next=p;?

?

?

?

?

?

?

?

?

?

?

?

/*q用于将上一个元素链接至当前新元素*/

?

?

?

?

?

?

?

?

q=p;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q自己移到当前最后一个元素,以备继续链接所用*/

?

?

?

?

?

?

?

?

scanf("%c",&ch);

?

?

?

?

?

?

?

?

getchar();

?

?

?

?

}

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

?

?

?

?

/*--------以上为建立一个单链表-------------*/

?

?

?

?

printf("\nInputacharacteryouwannafind\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

printf("\nthecharacteryouwannafindis%c\n",ch);

?

?

?

?

q=l->next;?

?

?

?

?

?

?

?

/*q移至头结点的后一个元素,即实际第一个数据点*/

?

?

?

?

n=1;?

?

?

?

//位置计数器

?

?

?

?

while(q!

=NULL)?

?

?

?

?

?

?

?

/*若q不为空,即该结点存在*/

?

?

?

?

{

?

?

?

?

?

?

?

?

if(q->c==ch)?

?

?

?

/*字符匹配*/

?

?

?

?

?

?

?

?

?

?

?

?

printf("characterfoundinposition%d\n",n);

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

/*移至下一个元素继续查找*/

?

?

?

?

?

?

?

?

n++;

?

?

?

?

}

}

//Allcopyrightarepreservedbycobby

/*元素插入操作*/

#defineNULL0?

?

?

?

?

?

?

?

?

?

?

?

/*宏定义*/

typedefstructnode?

?

?

?

?

?

?

?

/*定义结点类型的数据结构*/

{

?

?

?

?

charc;?

?

?

?

?

?

?

?

?

?

?

?

/*数据域,类型为字符型*/

?

?

?

?

structnode*next;?

?

?

?

/*指针域,类型为本结构体类型*/

}Node,*L;?

?

?

?

?

?

?

?

?

?

?

?

/*类型重定义,即Node和*L和structnode等价*/

main()

{

?

?

?

?

Ll,p,q;?

?

?

?

?

?

?

?

/*用指针类型定义三个结点类型的指针*/

?

?

?

?

charch;

?

?

?

?

intpos,n;

?

?

?

?

l=(L)malloc(sizeof(Node));?

?

?

?

/*分配内存空间*/

?

?

?

?

l->c='\0';?

?

?

?

?

?

?

?

?

?

?

?

/*为头结点的数据域赋值,值为空*/

?

?

?

?

l->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*指明下一个结点目前不存在*/

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q为游动指针,链表结点的连结要用*/

?

?

?

?

printf("Inputacharacter:

\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

getchar();

?

?

?

?

while(ch!

='!

')?

?

?

?

?

?

?

?

?

?

?

?

/*输入!

表示输入结束*/

?

?

?

?

{

?

?

?

?

?

?

?

?

p=(L)malloc(sizeof(Node));?

?

?

?

/*为新输入的数据分配内存空间*/

?

?

?

?

?

?

?

?

p->c=ch;

?

?

?

?

?

?

?

?

p->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*新输入的结点在链表的最后,即它的后面没有其它元素*/

?

?

?

?

?

?

?

?

q->next=p;?

?

?

?

?

?

?

?

?

?

?

?

/*q用于将上一个元素链接至当前新元素*/

?

?

?

?

?

?

?

?

q=p;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q自己移到当前最后一个元素,以备继续链接所用*/

?

?

?

?

?

?

?

?

scanf("%c",&ch);

?

?

?

?

?

?

?

?

getchar();

?

?

?

?

}

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

?

?

?

?

/*以上为建立一个单链表*/

?

?

?

?

printf("Inputthecharacteranditsposition,suchass,3\n\n");

?

?

?

?

scanf("%c,%d",&ch,&pos);

?

?

?

?

q=l;

?

?

?

?

n=1;

?

?

?

?

while(n!

=pos&&q->next!

=NULL)?

?

?

?

?

?

?

?

/*未找到插入位置,且后面还有元素*/

?

?

?

?

{

?

?

?

?

?

?

?

?

q=q->next;

?

?

?

?

?

?

?

?

n++;

?

?

?

?

}

?

?

?

?

/*退出循环后,要么找到插入位置,要么表已到最后,输入的插入位置过大*/

?

?

?

?

if(n

?

?

?

/*表已读完,仍未找到插入位置*/

?

?

?

?

?

?

?

?

printf("\n\nincorrectposition,insertfailed\n\n");

?

?

?

?

else?

?

?

?

?

?

?

?

/*找到插入位置*/

?

?

?

?

{

?

?

?

?

?

?

?

?

/*将进行插入操作*/

?

?

?

?

?

?

?

?

p=(L)malloc(sizeof(Node));?

?

?

?

/*给新输入的数据分配内存空间*/

?

?

?

?

?

?

?

?

p->c=ch;

?

?

?

?

?

?

?

?

p->next=q->next;

?

?

?

?

?

?

?

?

q->next=p;

?

?

?

?

}

?

?

?

?

/*操作完成,然后输出新表*/

?

?

?

?

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

}

//Allcopyrightarepreservedbycobby

/*按内容元素删除操作*/

#include

#include

#defineNULL0?

?

?

?

?

?

?

?

?

?

?

?

/*宏定义*/

typedefstructnode?

?

?

?

?

?

?

?

/*定义结点类型的数据结构*/

{

?

?

?

?

charc;?

?

?

?

?

?

?

?

?

?

?

?

/*数据域,类型为字符型*/

?

?

?

?

structnode*next;?

?

?

?

/*指针域,类型为本结构体类型*/

}Node,*L;?

?

?

?

?

?

?

?

?

?

?

?

/*类型重定义,即Node和*L和structnode等价*/

main()

{

?

?

?

?

Ll,p,q;?

?

?

?

?

?

?

?

/*用指针类型定义三个结点类型的指针*/

?

?

?

?

charch;

?

?

?

?

intn;

?

?

?

?

l=(L)malloc(sizeof(Node));?

?

?

?

/*分配内存空间*/

?

?

?

?

l->c='\0';?

?

?

?

?

?

?

?

?

?

?

?

/*为头结点的数据域赋值,值为空*/

?

?

?

?

l->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*指明下一个结点目前不存在*/

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q为游动指针,链表结点的连结要用*/

?

?

?

?

printf("Inputacharacter:

\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

getchar();

?

?

?

?

while(ch!

='!

')?

?

?

?

?

?

?

?

?

?

?

?

/*输入!

表示输入结束*/

?

?

?

?

{

?

?

?

?

?

?

?

?

p=(L)malloc(sizeof(Node));?

?

?

?

/*为新输入的数据分配内存空间*/

?

?

?

?

?

?

?

?

p->c=ch;

?

?

?

?

?

?

?

?

p->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*新输入的结点在链表的最后,即它的后面没有其它元素*/

?

?

?

?

?

?

?

?

q->next=p;?

?

?

?

?

?

?

?

?

?

?

?

/*q用于将上一个元素链接至当前新元素*/

?

?

?

?

?

?

?

?

q=p;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q自己移到当前最后一个元素,以备继续链接所用*/

?

?

?

?

?

?

?

?

scanf("%c",&ch);

?

?

?

?

?

?

?

?

getchar();

?

?

?

?

}

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

?

?

?

?

/*以上为建立单链表*/

?

?

?

?

printf("inputthecharacteryouwannadelete\n\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

printf("theelementyouwannadeleteis%c\n\n",ch);

?

?

?

?

q=l->next;

?

?

?

?

p=l;

?

?

?

?

n=1;

?

?

?

?

while(q!

=NULL&&q->c!

=ch)

?

?

?

?

{

?

?

?

?

?

?

?

?

p=q;

?

?

?

?

?

?

?

?

q=q->next;

?

?

?

?

?

?

?

?

n++;

?

?

?

?

}

?

?

?

?

/*退出循环时可能找到指定元素,也可能表读完,需要进一步判断*/

?

?

?

?

?

?

?

?

if(q==NULL)

?

?

?

?

?

?

?

?

printf("elementnotfound,deletefailed\n\n");

?

?

?

?

else

?

?

?

?

?

?

?

?

p->next=q->next;

?

?

?

?

q=l->next;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

}

//Allcopyrightarepreservedbycobby

/*按位置删除元素*/

#defineNULL0?

?

?

?

?

?

?

?

?

?

?

?

/*宏定义*/

typedefstructnode?

?

?

?

?

?

?

?

/*定义结点类型的数据结构*/

{

?

?

?

?

charc;?

?

?

?

?

?

?

?

?

?

?

?

/*数据域,类型为字符型*/

?

?

?

?

structnode*next;?

?

?

?

/*指针域,类型为本结构体类型*/

}Node,*L;?

?

?

?

?

?

?

?

?

?

?

?

/*类型重定义,即Node和*L和structnode等价*/

main()

{

?

?

?

?

Ll,p,q;?

?

?

?

?

?

?

?

/*用指针类型定义三个结点类型的指针*/

?

?

?

?

charch;

?

?

?

?

intpos,n;

?

?

?

?

l=(L)malloc(sizeof(Node));?

?

?

?

/*分配内存空间*/

?

?

?

?

l->c='\0';?

?

?

?

?

?

?

?

?

?

?

?

/*为头结点的数据域赋值,值为空*/

?

?

?

?

l->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*指明下一个结点目前不存在*/

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q为游动指针,链表结点的连结要用*/

?

?

?

?

printf("Inputacharacter:

\n");

?

?

?

?

scanf("%c",&ch);

?

?

?

?

getchar();

?

?

?

?

while(ch!

='!

')?

?

?

?

?

?

?

?

?

?

?

?

/*输入!

表示输入结束*/

?

?

?

?

{

?

?

?

?

?

?

?

?

p=(L)malloc(sizeof(Node));?

?

?

?

/*为新输入的数据分配内存空间*/

?

?

?

?

?

?

?

?

p->c=ch;

?

?

?

?

?

?

?

?

p->next=NULL;?

?

?

?

?

?

?

?

?

?

?

?

/*新输入的结点在链表的最后,即它的后面没有其它元素*/

?

?

?

?

?

?

?

?

q->next=p;?

?

?

?

?

?

?

?

?

?

?

?

/*q用于将上一个元素链接至当前新元素*/

?

?

?

?

?

?

?

?

q=p;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*q自己移到当前最后一个元素,以备继续链接所用*/

?

?

?

?

?

?

?

?

scanf("%c",&ch);

?

?

?

?

?

?

?

?

getchar();

?

?

?

?

}

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

?

?

?

?

/*以上为建立单链表*/

?

?

?

?

printf("Inputtheposition\n");

?

?

?

?

scanf("%d",&pos);

?

?

?

?

p=l;

?

?

?

?

n=1;

?

?

?

?

while(p->next!

=NULL&&n!

=pos)

?

?

?

?

{

?

?

?

?

?

?

?

?

p=p->next;

?

?

?

?

?

?

?

?

n++;

?

?

?

?

}

?

?

?

?

/*退出循环后,可能找到删除的元素位置,可能表读完,需要进一步判断*/

?

?

?

?

if(n==pos)?

?

?

?

/*删除位置找到,删除该位置上的元素*/

?

?

?

?

{

?

?

?

?

?

?

?

?

p->next=p->next->next;

?

?

?

?

?

?

?

?

//free(p);

?

?

?

?

}

?

?

?

?

else

?

?

?

?

?

?

?

?

printf("incorrectposition,deletefailed\n");

?

?

?

?

q=l;?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

/*输入整个链表前,先将q移到链表头,l一般不动*/

?

?

?

?

while(q->next!

=NULL)?

?

?

?

?

?

?

?

/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/

?

?

?

?

{

?

?

?

?

?

?

?

?

printf("%c-->",q->next->c);?

?

?

?

/*q->next->c表示q所指向的下一个元素的数据*/

?

?

?

?

?

?

?

?

q=q->next;?

?

?

?

?

?

?

?

?

?

?

?

/*完成该元素的输出后,q移至下一个元素重复输出操作*/

?

?

?

?

}

}

//建立双向链表

#include

#include

#include

#defineNULL0

typedefstructdlnode

{

?

?

?

?

charch;

?

?

?

?

structdlnode*pri,*next;

}dno

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1