c语言链表jiaoxe,数据结构单链表课程设计设计报告.docx

数据结构单链表课程设计设计 报告

PAGE

PAGE #

《数据结构》课程设计报告

1)需求分析

此程序主要用来实现单链表的创建、 插入、删除、卿F序、并、交、差运算及 输出等基本操作。

程序需要根据使用者的需要来运算 得出符合要求的结果

在程序运行的过程中根据提示进行输入,使用了 scanf函 数;

使用了 printf函数进行输出;

程序输出符合使用者的需要的结果;

程序能够输出任意运算的正确结果。

2)概要设计

定义所需的数据结构

data*nex t

data

typedef struct LNode{

//数据域

struct LNode 水next;//指针域

}LNode, *LinkList;

模块划分

void LinkListCreat (LinkList &L, int n):〃创建

void Listinsert (LinkList head, int i, int e); 〃插入 void ListDelete (LinkList head, int i, int e); 〃删除 void printList (LinkList fthead):〃输出

〃排void LinkListsort(LinkList &L);

〃排

voidLinkListMerge(LinkList&La, LinkList

&Lb, LinkList &Lc); 〃并

void LinkListjiao (LinkList &La, LinkList &Lb, LinkList &Lc); 〃交

void LinkListcha(LinkList &La, LinkList &Lb, LinkList

&Lc); 〃差

void LinkListhebing (LinkList &La, LinkList &Lb, LinkList &Lc); 〃差集的并

void main () ; //主函数,分别调用以上的子 函数

功能设计

首先利用元素逆序插入法建立链表,然后导出菜单,用 switch调用各个子函数,实现链表的创建,插入,删除,排序, 交,并,差等运算,其中排序用的是冒泡法。

详细设计

//单链表的创建

void CreatList (Lnode *L)/*建立

链表CreastList函数*/

{ Lnode *p;

int value;

L->next=NULL;

while (1)/*当输

入非0数值时*/ {scanf ( "%d", ftvalue); if (value==NULL)

/*建立

/*建立P

*)malloc (sizeof(Lnode));

链表*/

p->data=value;

p->next=L->next;/ *把后输入

的插到前面*/

L->next二p;

}

}

//单链表的输出

void printList(Lnode *head)

{

printf (z,输出的结果如下:\n");

Lnode *p 二 head-〉next;//头结点赋 给P

if (p 二二 NULL)

{

printf("List is empty!\n");

return;

}

wh订e (p 匸 NULL)

{

printf ("%d ", p->data);

p = p->next;

printf("\n");

}

〃单链表的插入

void Listlusert(LinkList head, int i, int e"/在单链表中第i个位置之前 揄人e兀緊

LinkList p, s;

int j=0;

p二head;

while (p&&j

p = p->next;

} ++j;

if(!p||j>i-l)

{

printfC要插入的位置错误「);

}

s=(LNode

*)malloc(sizeof (LNode)) ;// 给插入 的元素开辟空间

s->data = e;//改变指针指向

s->next = p->next;

p->next 二 s;

}

//单链表的删除

int ListDelete_L(Lnode *L, int i)

/*删除函数*/

{

Lnode *p=L->next;

int j=0;

Lnode *q;

while (p->next && j

{p=p一〉next; ++j;} /*找出第 i 节点,

PAGE

PAGE #

并令P指向其前趋*/

if (!p->next || j>i-l) return 0;

q=p->next;

p->next二q->next;

free(q);

:return 1;

}

〃单链表的差运算

Lnode

*c, *a, *t;

c=C

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值