朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(4)

2019-02-15 18:35

printf(\合 并 生 成 升 序 链 表\\n\ printf(\分 解 链 表\\n\ printf(\退 出\\n\\n\}

/*初始化空表*/

Status Init_Linklist(LinkList &L) {

L=(LinkList)malloc(sizeof(Lnode)); if(!L) return ERROR; L->next=NULL; return OK;

}

/*尾插法建立单链表*/

Status Creat_Linklist(LinkList &L) { int x;

LinkList p,rear; Init_Linklist(L); rear = L;

printf(\输入-1表示输入结束\\n\ while(scanf(\ {

p = (LinkList)malloc(sizeof(Lnode)); if(!p) return ERROR; p->data = x; rear->next = p; rear = p; }

rear->next = NULL; return OK; }

/*单链表遍历*/

void Disp_Linklist(LinkList L) {

LinkList p;

16

p = L->next; while(p) {

printf(\ p = p->next; }

printf(\}

/*计算单链表长度*/ int length_Linklist(LinkList L) {

int count = 0; /*count表示单链表长度*/ LinkList p;

return count; }

/*单链表逆置*/

void Reverse_Linklist(LinkList L) {

LinkList p, q ; }

/*删除值为偶数的结点*/ void DelEven_Linklist(LinkList L) {

LinkList p, q; }

/*在有序单链表中插入元素,链表仍然有序,插入成功返回OK,插入失败返回ERROR*/ Status Insert_Linklist(LinkList L, int x) { ; }

17

/*创建非递减有序单链表,创建成功返回OK,创建失败返回ERROR*/ Status CreatOrder_Linklist(LinkList &L) { }

/*两个非递减有序单链表La和Lb合并成一个非递增有序链表Lc*/ void MergeDescend_Linklist(LinkList La, LinkList Lb, LinkList &Lc) { }

/*两个非递减有序单链表La和Lb合并成一个非递减有序链表Lc*/ void MergeAscend_Linklist(LinkList La, LinkList Lb, LinkList &Lc) {

LinkList pa, pb, pc; pa = La->next; pb = Lb->next; pc = Lc = La; while(pa && pb) {

if(pa->data <= pb->data) {

pc->next = pa; pc = pa; pa = pa->next; } else {

pc->next = pb; pc = pb; pb = pb->next; } }

pc->next = pa ? pa : pb; free(Lb); }

/*链表La按值分解成两个链表,La全部为奇数,Lb全部为偶数*/ void Split_Linklist(LinkList La, LinkList &Lb) { }

18

main.cpp

#include \int main() {

int choice, length; LinkList L, La, Lb, Lc; while(1) {

menu();

printf(\选择你的操作:\ scanf(\ switch(choice) {

case 1:

if(Creat_Linklist(L))

printf(\单链表创建成功\\n\ else

printf(\单链表创建失败\\n\ break; case 2:

Disp_Linklist(L); break; case 3:

length = length_Linklist(L);

printf(\单链表长度为:%d\\n\ break; case 4:

Reverse_Linklist(L);

printf(\逆置后的链表为:\\n\ Disp_Linklist(L); break; case 5:

DelEven_Linklist(L); printf(\新链表为:\\n\ Disp_Linklist(L); break; case 6:

if(CreatOrder_Linklist(L))

19

{

printf(\值有序链表为:\\n\ Disp_Linklist(L); } else

printf(\单链表创建失败\\n\ break; case 7:

} } }

CreatOrder_Linklist(La); CreatOrder_Linklist(Lb);

MergeDescend_Linklist(La, Lb, Lc);

printf(\合并后的新链表为:\\n\ break; case 8:

CreatOrder_Linklist(La); CreatOrder_Linklist(Lb);

MergeAscend_Linklist(La, Lb, Lc);

printf(\合并后的新链表为:\\n\ break; case 9:

Creat_Linklist(L); Split_Linklist(L, Lb);

printf(\分裂后的新链表为:\\n\ Disp_Linklist(L); Disp_Linklist(Lb); break; case 0: return 0; default:

printf(\输入错误,请重新输入\\n\20


朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:郑东新区招商引资炼成“兵法”大揭秘!

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: