删除单链表中的第i个结点
答:if(NULL == start)//个数小于i return;last = start;while((NULL != last) && (--k > 0))last = last->next;if(NULL == last)//不足k个 return;last = last->next;//删除start至last之前的k个结点 pre->next = last;while(start != last){ LNode *del = start;start = ...
答:printf("\nk=%d超出范围!",k);else { printf("\n删除从第%d个链结点开始的连续%d个结点后得到:\n",i,k);print(L);} } } int main(){ Link *L;int n,i,k;printf("输入链表长度n:");scanf("%d",&n);create(L,n);Delete(L);printf("\n\n");system("pause");} ...
答:int dellinklist(Linklist L,int x){ Linklist p=L->next,q=L,s;while(p!=NULL){ if(p->data==x){ s=p->next;q->next=p->next free(p);p=s;} else { q=p;p=p->next;} return 1;
答:{ linklist p=L,r=L,s=L;//记录最大节点的前驱节点 while(!p->next){ r=p;//当前检测节点的前驱节点 p=p->next;//当前与最大值比较的节点比较 if(p->data>s->next->data)//若当前节点比最大节点大 s=r;//最大节点的前驱为当前节点前驱 } s->next=s->next->next;//删除最...
答:1. 将L中的结点加入另一个链表L1中,预加入的结点的值若已经位于原链表中则不加入 2. 最终L1即为需要的结果 该算法实现最为简单,但是效率不高,可以做如下改进 结点加入L1时按照从小到大进行排序,新加入的结点依照顺序进行比较,这样符合加入条件的 结点就无需比较L1的全部元素,只需要比较到第一...
答:void monkey(int m); //建立有m个元素的单链表 datatype Get(int a); //取单链表中第i个结点的元素值 datatype Delete(int n); //在单链表中删除第n个结点 private:Node<datatype> *head,*tail; //单链表的结构指针 };template <class datatype> LinkList<datatype>:: LinkList(...
答://删除链表的第i个元素,并用e返回值//i的合法范围是:0<i<ListLength(L)+1Status ListDelete(LinkList & L,int i,ElemType & e){ if(i<1 || i>ListLength(L)) { cout<<"访问越界..."<<endl; return ERROR; } else { LinkList p = L; int j; for(j = 0;j < i-1;j++) //for...
答://C/C++实现,从原链表中取不重复的放到另一个链表里,每个节点都从头开始比较(性能较差),释放原链表//删除重复节点typedef struct tagMyList{ int data; struct tagMyList *next;}MyList;MyList* deleteRepeatNode(MyList *l);void freeList(MyList *l){ MyList *t = l->next;...
答:{ int i;head=p1=(node*)malloc(sizeof(node));for(i=0;i<30;i+=2)/*已知带头节点的单链表L中的结点是按整数值递增排列的(就赋0-28所有偶数了 )*/ { p2=(node*)malloc(sizeof(node));p2->data=i;p1->next=p2;p1=p2;} p1->next=NULL;} /*插入结点*/ void insert(node* ...
答:LinkList *L) //输出线性表 { LinkList *p=L->next;while(p!=NULL){ printf("%c",p->data);p=p->next;} } int GetElem(LinkList *L,int i,ElemType &e) //求线性表中某个数据元素值 { int j=0;LinkList *p=L;while(j<i&&p!=NULL){ j++;p=p->next;} ...
网友评论:
元祥15934853524:
单链表中删除第一个结点的算法 -
47918钮诞
: 头结点是第一结点,只是一般没有数据头结点后面是首元结点,即第一个存放数据的结点做删除操作时,一般需要返回所删除结点的数据,所以一般不删除头结点如果你执意要删的话,当然也可以,因为链表分为有头结点的链表和无头结点的链表
元祥15934853524:
在单链表中,怎样删除第一个结点? 谢谢! -
47918钮诞
: 一般使用一个指针(我们通常称其为头结点)来指向第一个结点,这个指针只用来指向第一个结点,本身并不存储任何数据.如果你不幸的在头结点里存储数据,并想删除它,那很遗憾的告诉你:不行!
元祥15934853524:
设计在无结点的单链表中删除第i个结点的算法 -
47918钮诞
: #include <stdio.h> #include <stdlib.h>typedef struct Link { int num ; struct Link *next; }L;void link( struct Link * head) //链表逆序 { L *p, *q ,*temp, *temp2 ; p = head ; temp2 = q = head->next ; while (q!=NULL) { temp = q->next ; q -> next = p; p = q ; ...
元祥15934853524:
顺序表、单链表的删除算法 -
47918钮诞
: 单链表的删除操作是指删除第i个结点,返回被删除结点的值.删除操作也需要从头引用开始遍历单链表,直到找到第i个位置的结点.如果i为1,则要删除第一个结点,则需要把该结点的直接后继结点的地址赋给头引用.对于其它结点,由于要...
元祥15934853524:
删除单链表中第i个节点,用e返回被删除的元素 -
47918钮诞
: #include "stdio.h"#include "stdlib.h"#define OK 1#define ERROR 0typedef int ElemType;typedef int Status;typedef struct Lnode { ElemType data; struct Lnode *next;}Lnode,*LinkList;//以下是建立单链表void creatlist(LinkList &head){ //请将...
元祥15934853524:
删除单循环链表的一个元素的前结点怎么删? -
47918钮诞
: 1) 在单循环链表中要删除第I个结点的前一个结点怎么删除? 如果I>1,第I个结点的前一个结点就是第I-1个结点,找到它,象删除单链表的结点一样删除它 如果I=1,第I个结点的前一个结点就是最后那个结点,找到它的前一个结点,使其指针域...
元祥15934853524:
单链表删除操作 -
47918钮诞
: // 删除节点,释放内存空间 p->next = p->next->next; delete p->next;若链表为:链表节点 | 1 | 2 | 3 |...对应指...
元祥15934853524:
在一个具有n个节点的单链表中删除第i个节点算法的时间复杂度是多少? -
47918钮诞
: 在一个具有n个节点的单链表中删除第i个节点算法的时间复杂度是O(n);因最坏情况是删除最后一个结点,所以要找到最一个结点的前驱,也就要访问前n-1个结点,故算法的时间复杂度为O(n);
元祥15934853524:
怎么去掉单循环链表中的头结点? -
47918钮诞
: 把尾节点指向第一个元素再释放头结点 就行了
元祥15934853524:
编写删除函数,删除单链表中数据元素等于x的第一个结点.删除成功返回被删除元素的位置,删除不成功返回 - 1.要求该函数不设计在单链表类中,假设数据元素为int型变量. -
47918钮诞
: int deletX(链表类名 &,int x ); 大概思路就是:删除函数的参数为链表类和需要删除的元素,函数内进行遍历寻找等于x的节点,保留给节点位置并将节点都的节点像前移一个位置.