华中科技大学文华学院
数据构造课程设计
课
程:
数据构造
题
目:
链表操作
专业班级: 09 软
ElemType ListDelete_L(LinkList &L,int i)//删除元素
{
LinkList *q,*p=&L; ElemType e;
int j=0;
while(p->next&&j<i-1)
{
p=p->next; j++;
}
if(!p->next&&j>i-1) return 0;
q=p->next;
p->next=q->next; e=q->data; free(q);
return e;
}
int Count(LinkList L,ElemType e)//查找元素的位置
{
LinkList *p=; int n=1;
while(p)
{
if(p->data==e) return n;
n++;
p=p->next;
}
return 0;
}
void ReverseOrder(LinkList &L)//求逆序
{
LinkList *p1,*s,*p=; s=p->next;
p->next=NULL; while(s->next)
{
p1=s->next; s->next=p; p=s;
s=p1;
}
s->next=p; =s;
}
void PrintList(LinkList L)//打印链表
{
LinkList *p; p=; while(p)
{
printf(“%d “,p->data); p=p->next;
}
printf(“\n“);
}
int Listlength(LinkList *L) //求链表长度
{
LNode *p; //链表的单个元素指针,而不能用链表int j=0;
p=L; //将其指向链表的第一个元素while(p->next!=NULL)
{
++j;
p=p->next;
}
return j;
}
LinkList SortList(LinkList *L)//递增排序函数:入口参数:链表的头指针,此为链表中的排序函数
{
LinkList *p,*q; int temp;
for(p=L;p!=NULL;p=p->next)
{
for(q=p->next;q!=NULL;q=q->next)
{
if(p->data>q->data)
{
temp=q->data;
q->data=p->data; p->data=temp;
}
}
}
return *L;
}
void main()
{
LinkList HY; InitList(HY); int n,i=1; ElemType e=1,x;
printf(“请输入HY 链表中的元素〔按 0 完毕〕:\n“); while(e)
{
scanf(“%d“,&e); if(!e)break; ListInsert_L(HY,i++,e);
}
for(i=0;i<20;i++) printf(“* * “);
printf(“* 请输入以下数字执行相应程序:
* “);
printf(“* 1: 向 链 表 中 插 入 元 素
* “);
printf(“* 2: 删 除 链 表 中 的 某 个 元 素
* “);
printf(“*
3: 按 值 查 找 元 素 的 位 置
*
“);
printf(“*
4: 统 计 链 表 中 元 素 个 数
*
“);
printf(“*
5: 输 出 链 表
*
“);
printf(“*
6: 将 链 表 中 元 素 按 升 序 排 列
*
“);
printf(“*
7: 求 链 表 的 逆 序
*
“);
for(i=0;i<20;i++) printf(“* * “);
int keyL;
label: printf(“请输入数字执行相应程序,按 0 完毕程序!\n“); scanf(“%d“,&keyL);
if(!keyL)goto end; switch(keyL)
{
case 1:
printf(“请输入在HY 链表中要插入的位置和数〔用空格隔开〕:\n“);
数据结构课程链表设计报告 来自淘豆网m.daumloan.com转载请标明出处.