链表中查找第i个元素
答:创建一个 指针数组 ,然后按照 链表 的顺序将每一个节点的指针放到数组中 当修改链表的时候,同时修改这个指针数组 感觉好麻烦,不过我想不出其他的办法了
答:在顺序表中删除一个元素的时间复杂度为O(n),删除顺序表中第i个元素,将顺序表第i个元素以后元素均向前移动一个位置。因此时间复杂度为O(n)。采用顺序表和单链表存储长度为n的线性序列,根据序号查找元素,其时间复杂度分别为O(1)、O(n),顺序表存储位置是相邻连续的,可以随即访问的一种数据结构...
答:O(n)线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
答:return 1; /*当单链表为空时,返回1;否则返回0*/ } return 0;} ListNode *Get(ListNode* head,int i)/*查找单链表中第i个结点。查找成功返回该结点的指针表示成功;否则返回NULL表示失败。*/ { ListNode *p;int j;if(ListEmpty(head)) /*在查找第i个元素之前,判断链表是否为空*/ { ...
答:顺序存储是先根据数据量的需要先分配好存储空间的,相当于先给数据分好了带编号的座位,所以可以直接找到。而链式是不事先定好存储空间的,就是第一个数据好了再给存第二个,且有个指针区指向下个数据的位置,所以要想找到第几个数据都要从头来 ...
答:s->next=p->next; p->next=s。1.获取链表第i个数据的算法思路。声明一个结点p指向链表第一个结点,初始化j从1开始。当j<i时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1。若到链表末尾p为空,则说明第i个元素不存在。否则查找成功,返回结点p的数据。2.单链表第i...
答:如果不添加头结点,需要对插入位置进行判断:如果是第0个元素,需要创建新节点,其next指向head,并且head修改指向为新节点;如果不是第0个元素,直接找到第i-1个元素节点,插入新节点,其next指向第i个元素,同时修改第i-1个元素节点的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* ...
答:int j=1; p=head; while(j<i && p->next) { p=p->next; j++; } if(j==i) { q=new node(e); q->next=p->next; p->next=q; } else { printf("链表没有%d个元素",i); }
答:LinkList *L,datatype x,int i) {LinkList *q,*p = L->next;int pos = 0;int len = lenght(L);// 表L的长度q = (LinkList *)malloc(sizeof(LinkList));if(L == NULL || L->next == NULL || q == NULL) return ERROR;q->data = x;if(i < 1) {// 插在第一个...
网友评论:
桑妻15919798095:
试编写不带头的单链表中查找第i个结点的算法(C语言) -
63773养瑾
: typedef struct node {int data;struct node *next; }Node, *LinkedList;Node* Locate(LinkedList first, int i) {Node *p = first;int j = 1;if(i <= 0) return NULL;while(p && j < i) {p = p->next;j++;}return p; }
桑妻15919798095:
创建一个单链表,输出该单链表,然后在单链表中查找第i位的元素,若找到,输出该元素的值否则输出无此元素 -
63773养瑾
: #include<stdio.h>struct Name{int a;Name* next; };Name* head;Name* p;Name*q;Name* find(int i){int j=1;Name* point=head;while(j!=i&&point->next!=NULL){j++;point=point->next;}return point;}void main(){Name a;head=&a;p=head;q=head;Name b;...
桑妻15919798095:
试编写一个算法,在带表头结点的单链表中寻找第i个结点. -
63773养瑾
: typedef struct LNode { int data; LNode *next; }LNode; LNode Find( LNode*bt , int i) { LNode * p; int count; p=bt->next; while (count!=i) { p=p->next; count ++; } return p; }
桑妻15919798095:
创建个单链表,输出该单链表,然后在单链表中查找第 i 位的元素,若找到,输出该元素的值,否则输出“无此元素|”. 求详细解答步骤. -
63773养瑾
: //既然你懂不结构体,我只能把程序先写出了#include <iostream> #include <time.h> #include <stdlib.h> using namespace std;struct Link{int data ;Link *next ;Link(){data = 0 ;next = NULL ;}Link(int n , Link *next = NULL){data = n ;this->...
桑妻15919798095:
在表长为n的单链表中,算法时间复杂度为O(n)的操作是查找单链表中第i个结点.为什么? -
63773养瑾
: 因为单链表只能顺序访问,因此每次访问其中第i 个元素需要从头开始,按照序号访问元素的平均查找个数为(n+1)/2,用时间复杂度表示不就是O(n)了
桑妻15919798095:
链表查找地 i个 元素 的问题 -
63773养瑾
: i或者j值异常的时候,比如i <= 0的时候……
桑妻15919798095:
编写算法,实现单链表中打印输出第i个数据元素 -
63773养瑾
: Locate(i,head)1. 若i<0 则 print("error") 算法结束2. 循环i次,执行 若p=NULL print("not found"); 算法结束 否则 p<-p->next3. print(p->data)4. 算法结束 纯手打望采纳
桑妻15919798095:
链表(带头结点)基本操作实验 -
63773养瑾
: #include<iostream>#include <malloc.h>#define FALSE 0#define TRUE 1#define OK 1#define ERROR 0#define MaxSize 10 using namespace std; typedef char ElemType; typedef struct Node {ElemType data; Node *next; }Node, *LinkList; int ...
桑妻15919798095:
顺序表的查找、插入与删除 -
63773养瑾
: #include<stdio.h> #include<stdlib.h> #define N 10 //顺序表的最大容量 int length=0; //顺序表的当前元素个数#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_...