数据结构

您所在的位置:网站首页 c语言实现链表的基本操作 数据结构

数据结构

#数据结构| 来源: 网络整理| 查看: 265

#include stdio.h

#include malloc.h

#include stdlib.h

int temptag = 0;

typedef int ElemType;

typedef struct LNode //定义单链表结点类型

{

ElemType data;

struct LNode *next;

} LinkList;

void InitList(LinkList *&L) //初始化链表,若要重新输入数据,就应该先初始化链表

{

L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点

L-next=NULL;

printf("初始化链表成功!\n");

}

void DestroyList(LinkList *&L) //销毁链表,也就是释放内存

{

LinkList *p=L,*q=p-next;

while (q!=NULL)

{

free(p);

p=q;

q=p-next;

}

free(p);

}

int ListLength(LinkList *L) //输出链表的长度

{

LinkList *p=L;int i=0;

while (p-next!=NULL)

{

i++;

p=p-next;

}

return(i);

}

void DispList(LinkList *L) //显示链表的数据

{

printf("链表中的数据如下:\n");

LinkList *p=L-next;

while (p!=NULL)

{

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

p=p-next;

}

printf("\n");

}

int GetElem(LinkList *L,int i,ElemType &e) //获取链表中的任意位置的元素。但是不能越界

{

int j=1;

LinkList *p=L-next;

while (ji && p!=NULL)

{

j++;

p=p-next;

}

if (p==NULL)

return 0;

else

{

e=p-data;

return 1;

}

}

int ListInsert(LinkList *&L,int i,ElemType e) //插入新的节点

{

int j=0;

LinkList *p=L,*s;

while (ji-1 && p!=NULL)

{

j++;

p=p-next;

}

if (p==NULL) //未找到第i-1个结点

{

printf("未找到第%d个节点!\n", (i-1));

return 0;

}

else //找到第i-1个结点*p

{

s=(LinkList *)malloc(sizeof(LinkList)); //创建新结点*s

s-data=e;

s-next=p-next; //将*s插入到*p之后

p-next=s;

return 1;

}

}

int ListDelete(LinkList *&L,int i) //删除相应位置的节点

{

int j=0;

LinkList *p=L,*q;

while (ji-1 && p!=NULL)

{

j++;

p=p-next;

}

if (p==NULL) //未找到第i-1个结点

return 0;

else //找到第i-1个结点*p

{

q=p-next; //q指向要删除的结点

if (q==NULL) return 0;

//e=q-data;

p-next=q-next; //从单链表中删除*q结点

free(q); //释放*q结点

return 1;

}

}

void jiangxu(LinkList *&L) //降序排列链表中的元素

{

int temp1, temp2;

LinkList *q, *temp;

q = L-next;

while(q != NULL)

{

temp = q-next;

while(temp != NULL)

{

temp1 = q-data;

temp2 = temp-data;

if(temp1 temp2)

{

q-data = temp2;

temp-data = temp1;

}

temp = temp-next;

}

q = q-next;

}

}

void nizhi(LinkList *&L) //将链表中的元素顺序逆置

{

LinkList *New, *p, *q;

p = L-next;

New = (LinkList *)malloc(sizeof(LinkList));

New-next = NULL;

while(p != NULL)

{

LinkList *s=(LinkList *)malloc(sizeof(LinkList));

s



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3