数据结构 |
您所在的位置:网站首页 › c语言实现链表的基本操作 › 数据结构 |
#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 |