本文共 1989 字,大约阅读时间需要 6 分钟。
线性表的链式存储结构的特点就是用一组任意的存储单元存储线性表的数据元素(数据单元之间的关系是可以连续的,也可以是不连续的)。
#include#include #define ERROR 0#define OK 1#define OVERFLOW -2typedef int Status ;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode* next;}LNode;typedef LNode* LinkList; //指向单链表的指针Status initList(LinkList *L){ (*L) = (LinkList)malloc(sizeof(LNode)); if(!(*L)) exit(OVERFLOW); (*L)->next = NULL; return OK;}Status insertElement(LinkList L, int i, ElemType e){ LinkList p, s; int j; p = L; j = 0; while(p && j next; ++j; } if(!p || j>i-1) return ERROR; s = (LinkList)malloc(sizeof(LNode)); if(!s) exit(OVERFLOW); s->data = e; s->next = p->next; p->next = s; return OK;}Status getElement(LinkList L, int i , ElemType &e){ LinkList p = L; int j = 0; while(p && j next; ++j; } if(!p || j>i) return ERROR; e = p->data; return OK;}Status deleteElement(LinkList L , int i , ElemType &e){ LinkList p = L , s; int j = 0 ; while (p && j next; ++j; } if(!p->next || j>i) return ERROR; e = p->data; s = p->next; p->next = s->next;//(相当于p->next = p->next->next) return OK;}Status updateElement(LinkList L , int i , ElemType e){ LinkList p = L; int j = 0 ; while ( p && j next; ++j; } if(!p || j>i) return ERROR; p->data = e; return OK;}//按照下标查找,返回该位置的值与getElement方法重合/*Status locateElement(LinkList L , int i , ElemType &e){ LinkList p = L; int j = 0; while( p && j next; ++j; } if(!p || j>i) return ERROR; e = p->data; return OK;}*///按照数值查询,返回该数值的下标int LocateElement(LinkList L , ElemType e){ LinkList p = L; int j = 0; while (p && p->data != e ){ p = p->next; ++j; } return j;}int main (){ LinkList l; initList(&l); int e , e1; //ElemType j =0; insertElement(l , 0 , 12); insertElement(l , 1 , 4); insertElement(l , 2 , 55); insertElement(l , 3 , 555); updateElement(l, 2 , 44); deleteElement(l , 2 , e); getElement(l , 2 , e1); ElemType g = 555; int j = LocateElement(l , g); printf("值为:%d\n", j); printf("%d\n", e); printf("%d\n", e1);}
转载地址:http://xwegf.baihongyu.com/