《数据结构与算法》实验指导V2017 {
LNode *p,*q,*L; L=InitList(); p=L; int i=1; while(i<=n) {
q=(LNode *)malloc(sizeof(LNode)); printf(\输入链表的结点date %d: \ scanf(\ q->next=NULL; p->next=q; p=q; }
return L; }/*CreateList*/
/*释放链表及其空间*/
void DestroyLinkList(LinkList L) {
LNode *p=L,*q; while(p) {
q=p->next; free(p); p=q; }
}/* DestroyLinkList */
int menu_select() {
char *menu[]={\ \ /*初始化链表*/ \ /*查找元素*/ \ /*插入元素*/ \ /*删除元素*/
\ /*创建具有n个元素的链表*/ \释放链表所占空间&退出*/ \ };
char s[3]; /*以字符形式保存选择号*/ int c,i; /*定义整形变量*/
for (i=0;i<8;i++) /*输出主菜单数组*/
常熟理工学院计算机科学与工程学院
11
《数据结构与算法》实验指导V2017 {
printf(\ } do {
printf(\ /*在菜单窗口外显示提示信息*/ scanf(\ /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整形数*/ }
while (c<0||c>5); /*选择项不在0~5之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/ }
int main() {
int i,n;
ElemType e;
LinkList L=NULL; /*定义指向单链表的指针*/ for (;;) /*无限循环*/ {
switch (menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {
/*值不同,执行的函数不同,break 不能省略*/ case 1:
printf(\ L=InitList(L); if(L!=NULL)
printf(\ else
printf(\ break; case 2:
printf(\ printf(\ scanf(\
if (L!=NULL&&GetElem(L,i,&e)) {
printf(\ printf(\ PrintList(L); } else
printf(\ break;
常熟理工学院计算机科学与工程学院
12
《数据结构与算法》实验指导V2017 case 3:
printf(\ printf(\ scanf(\ printf(\ scanf(\
if(L!=NULL&&InsertElem(L,i,e)) {
printf(\ printf(\ PrintList(L); } else
printf(\ break; case 4:
printf(\ printf(\ scanf(\
if(L!=NULL&&DeleteElem(L,i,&e)) {
printf(\
printf(\ printf(\ PrintList(L); } else
printf(\ break; case 5:
printf(\ /*输入单链表的元素个数*/ scanf(\ if (n<0) {
printf(\ break; }
printf(\ L=CreateList(n); if (L==NULL) {
printf(\ break; }
常熟理工学院计算机科学与工程学院
13
《数据结构与算法》实验指导V2017 printf(\ PrintList(L); break; case 0:
printf(\ if(L!=NULL) {
DestroyLinkList(L); L=NULL; }
exit(0); /*如菜单返回值为0程序结束*/
} }
return 0; }
实验结果:
(1)初始化链表:
(2)查找元素:
常熟理工学院计算机科学与工程学院
14
《数据结构与算法》实验指导V2017
(3)插入数据:
(4)删除数据:
常熟理工学院计算机科学与工程学院
15