有一个单链表,其头指针为L,编写一个函数计算数据域为X的结点个数
很久没有写拉,不知道是可以编译通过,不过基本就是这个样子!
int count(* head)
{
int sum=0;
struct yourds *temp;
if(!head)return;
*temp=head->next;
while(temp)
{
if(temp->data==x)
sum++;
*temp=temp->next;
}
return sum;
}
int count(* head)
{
int sum=0;
struct yourds *temp;
if(!head)return;
*temp=head->next;
while(temp)
{
if(temp->data==x)
sum++;
*temp=temp->next;
}
return sum;
}
int GetLength(stList *pHead, stList *pstValue)
{
int n = 0;
while( pHead )
{
if( *pHead == *pValue ) //必须有 == 重载,
{
n++;
}
pHead = pHead->pNext;//指向下个元素
}
return n;
}
在单链表中只能设置头指针对吗
不对。一般对循环单链表只设尾指针不设头指针,其原因是,如果设的是头指针,对表尾进行操作需要时间复杂度。单链表是指通过一组任意的存储单元来存储线性表中的数据元素。
单链表中L->next=s ; 和L=s;的区别 ,其中L是头指针,初始L=null,_百度...
struct Link{ int data;struct *next;};然后我们定义一个 链表 Link L=NULL; 这句话的意思就说,我定义了一个指针 L,L指向内存中以Link 结构形式开辟的一块空间的地址,当你将NULL赋值给L,表示L不指向空间的任何位置。即,我们定义了一个空链表。L->next 是典型的用指针访问数据的形...
有一个有序单链表(从小到大排序),表头指针为head,编写一个函数向该...
\/\/create an orderedly single-liked list template<class T> void slist<T>::insert_order(T item){ Node<T>*currptr,*preptr,*newnode;newnode=new Node<T>(item, NULL); \/\/prepare the inserted node \/\/find inserting positon preptr=NULL;currptr=head;while(currptr!=NULL){ if ...
在一个单链表中,已知指针q指向指针p所指结点的前驱结点,则删除
D、q->next=p->next 因为p所指结点是q所指结点的前驱结点,也就是p--->next=q;要想删除结点q,则只需将P--->next =q--->next 即可。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个...
问答题5.解释带头结点的单链表和不带头结点的单链表的区别。
不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点。4、在操作上。带头结点的单链表的初始化为申请一个头结点。无论插入或删除的位置是地第一个结点还是其他结点,算法步骤都相同。不带头结点的单链表,其算法步骤要分别考虑插入或删除的位置是第一个结点还是其他结点。
带头指针和不带头指针链表的差别
在带头节点的单链表中,头指针(head)只有一个域,即链指针,它指向头节点,头节点有两个域,一个是数据域,值为0(NULL),还有一个域,链指针,这个链指针指向单链表的第一个数据元素。而在不带头结点的单链表中,头指针也只有一个链指针,但它指向单链表的第一个数据元素。
线性表 - 链式存储结构 - 单链表
①LinkList和ListNode *是不同名字的同一个指针类型(命名的不同是为了概念上更明确)②LinkList类型的指针变量head表示它是单链表的头指针 ③ListNode *类型的指针变量p表示它是指向某一结点的指针 指针变量和结点变量 ┌────┬────────────┬─────────────┐ ││...
有序单链表(从小到大排序),表头指针为head,编写一个函数向该单链表中...
第一,你单链表的头结点head里是否有存数据。从你的 if (head == null) head = newnode;来看head是存了数据,而 if (head.next==null) head.next=newnode;来看head是没存数据的。两个在一起有点矛盾,要是head只做标志的作用不存数据则有第二个if就可以了;要是head存数据的话,有第...
设head为带表头结点的单链表的头指针,试写出算法;
template<class T> void List<T>::search(){ if(head->link == NULL) \/ \/只有一个头结点 { cout<<"empty list"<<endl;return;} Node<T> p = head->link;Node<T> q = head;cout<data<<"\\t";for(;p;p = p->link) \/\/循环查找最后一个结点q { q = p;} cout<data<...
P指针指向单链表的尾元素的条件是?
一个以head为头指针的带头结点的单链表,其仅有一个结点元素的条件是 () 。 头指针head和终端结点指针域的表示 单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。 注意: 链表由头指针唯一确定,单链表可以用头指针的名字来命名。
陶贞捷克: stList是你要的链表结构int GetLength(stList *pHead, stList *pstValue) {int n = 0;while( pHead ){if( *pHead == *pValue ) //必须有 == 重载,{n++;}pHead = pHead->pNext;//指向下个元素} return n; }
北江区14711069643: 编写一个完整的计算头结点指针为L的单链表长度的程序,我们的作业,还没做出来 ··· - ?
陶贞捷克: #include typedef char type; typedef struct Lnode { type data; struct Node *next; }Linklist; int listlength(Linklist *L) { Linklist *p=L; int n=0; while(L->next!=NULL) { n++; p=p->next; } return (n); } 把这个模块放在程序里,然后调用一下就行了
北江区14711069643: 试编写一个计算头结点指针为L的单链表长度的算法.?
陶贞捷克: p=L;len=0;while(p->next) {len++;p=p->next;}len即为链表长度
北江区14711069643: 有一个带头结点的单链表L,设计一个算法将其所有元素逆置 - ?
陶贞捷克: struct Node { /* 单链表类型声明 */ ElemType data; /* 数据域 */ struct Node *next; /* 指针域 */ }; void Reverse(Node *head) { /* 从第一结点开始颠倒 */ Node *p, *q; p = head->next; /* p 指向第一个结点 */ head->next = NULL; /* 断开链表表头 */ while (p != NULL) { q = p; p = p->next; /* 当前结点指针后移 */ q->next = head->next; /* 表头插入 */ head->next = q; } }
北江区14711069643: 有一个带头结点的单链表L,设计算法将L逆置 - ?
陶贞捷克: LinkNode last = null; while(L.hasNext()) {node = L.next();Node newnode = node.clone();newnode.setNext(last);last = newnode; }return last; //last是逆置的链表的头结点
北江区14711069643: 编程题目 给一个单链表L编写一个删除L中值为x结点的直接前驱结点的算法 - ?
陶贞捷克: #include "stdio.h" typedef struct Node{ Datetype data; struct Node *next; }node; int Del(int x,node *first) {//first为单链表头指针,返回值1表示操作成功,0表示失败 node *p,*q,*r; p=first; q=NULL; r=NULL; if(!p||p->data==x)return 0; while(p){ r=q; q=p; p=p->next; if(p->data==x&&r){r->next=p;break;} } if(!p)return 0; else return 1; }
北江区14711069643: 求高手给算几道在算法设计题1.对给定的单链表L,编写一个删除L中值为x的结点的直接前趋结点的算法.2.有一个单链表(不同结点的数据域),其头指针... - ?
陶贞捷克:[答案] #include using namespace std; int fib(int t){ int a = 1; int b = 1; if(t while(true){ int next = a + b; if(next >= t) return next; a = b; b = next; } } int main(){ cout return 0; } 结果输出34
北江区14711069643: 2.(10分)设有一个带头结点,由正整数组成的无序单链表,头指针为L.....整个问题如下 - ?
陶贞捷克: #include <stdio.h> #include <stdlib.h>typedef struct Lnode{int data;struct Lnode *next; }Lnode,*Linklist; Linklist L;Linklist ListInit(Linklist Head, int n) {Linklist p;int i;for(i = 0; i < n; i ++){p = (Linklist)malloc(sizeof(Lnode));p->next = Head;...
北江区14711069643: 试写一算法在带头结点的单链表结构上实现线性表操作Length(L).下面各个步骤的解释要详细 - ?
陶贞捷克: intListLength_L(LinkList &L) {int i=0;//i存储链表长度,初始为0LinkList p=L;//p为链表的指针,初始为头指针,指向头结点if(p) p=p-next;//如果p指向的头结点不为空,p指向带数据的第一个结点while(p){//如果p非空,i长度加1,且指向下一个结点p=p->next;i++;}return i;//返回i,即链表的长度 }
北江区14711069643: 已知带头结点的单链表L中的结点按整数值递增排列,写一算法,将x结点插入L中,使L仍然有序 - ?
陶贞捷克: void Insert(ListNode *head, int x) {// 设为有头结点,成员和类型名请按自己的实际情况修改 ListNode *p, *q; p = head->next; q = head; while (p != NULL && p->data < x) { q = p; p= p->next; } p = (ListNode *)malloc(sizeof(ListNode)); p->data = x; p->next = q->next; q->next = p; }