LinkList L;//声明一个指向单链表的指针//初始化一个空表InitList(L);//... 2,单链表的基本操作 1,插入 1,按位序插入(ListInsert(&L,i,e)) 在第i 个位置插入元素e(带头结点) boolListInsert(LinkList &L,inti,ElemType e){if(i<1)returnfalse; LNode *p;//指针p 指向当前扫描到的节点intj=0;...
3.2 int FindKth(List L, int P):根据制定的位序P,返回L中相应的元素 //返回指定位置的元素值intFindKth(List L,intP){if(P > L->lastPosition)return-1;elsereturnL->Data[P]; } 3.3 int Find(List L, int X):返回L中第一个X元素的下标值 //寻找线性表中第一个X的下标intFind(List L,intX...
如果找到了,便删除该节点,并释放内存。 voidremover(structnode**prt_to_head,intold){structnode*next,*last,*hold,*head;//检查是否为空链表head=*prt_to_head;if(empty(head))printf("Empty list.\n");else{//检查是否删除第一个节点if(head->data==old){//删除第一个节点hold=head;*prt_to_head...
//后插操作boolInsertNextNode(LinkListL,int i,ElemType e){LNode*p=GetElem(L,i-1);//通过按位查找找到前驱结点pif(!p)returnfalse;//如果前驱结点为空指针,则返回falseLNode*s=(LNode*)calloc(1,sizeof(LNode));//为新结点申请空间assert(s);//如果空间申请失败,则报错s->data=e;//将要插入的...
list:插入和删除元素效率高,因为只需要修改相邻节点的指针。 随机访问: vector:支持随机访问,可以通过下标快速访问元素。 list:不支持随机访问,只能通过迭代器顺序访问元素。 空间和内存分配: vector:vector 一次性分配好内存,不够时才进行扩容。 list:list 每次插入新节点都会进行内存申请。
FreeList函数仍是采用遍历的方式一个一个的将节点内存释放,最后实现全部删除的效果,但是要注意在最后应该讲头尾节点至NULL否则下次的链表将会接着这次的头尾。 2.7.在指定位置插入节点 ———在指定位置增 代码语言:javascript 复制 voidAddListRand(int index,int a){if(NULL==head){printf("链表没有节点\n");...
L->next = p; // 插入到表头 } } // CreateList_L int DestroyList(LinkList &L){ // 初始条件:线性表L已存在。操作结果:销毁线性表L LinkList q;while(L){ q=L->next;free(L);L=q;} return 1;} int ClearList(LinkList L) // 不改变L { // 初始条件:线性表L已存在。
//typedef int SLTADataType;typedef struct SListNode //--single Linked List{SLTDataType data;//成员变量struct SListNode* next;}SLTNode;void SLTPrint(SLTNode* phead);//void SLPushFront(SLTNode* pphead,SLTDataType x);void SLPushFront(SLTNode** pphead, SLTDataType x);//头部插入//void...
list->getSize = getSize; list->get = get; list->print = print; list->_this = list;// 用 _this 指针将 list 本身保存起来 return (List*)list; } 需要注意的是此处的 _ this 指针,_this 指针可以保证外部对 list 的操作映射到对 _this 的操作上,从而使得代码得到简化。清单 3. 插入及删除 ...