導航:首頁 > 源碼編譯 > 線性單鏈表長度的演算法

線性單鏈表長度的演算法

發布時間:2022-05-05 11:24:34

1. 怎樣寫出計算單向鏈表長度的演算法

定義一個記錄長度的變數length 再定義一個指針指向頭結點 然後判斷下一個節點是否為空 不為空length++ 循環判斷 直到定義哪個指針指向的對象為空

2. 建立一個單鏈表,並求其長度的演算法描述

int Length(PLNode head)/*求長度*/
{
int n=0;
PLNode p;
p=head->next;
while(p)
{
n++;
p=p->next;
}

從頭節點開始,遍歷鏈表,如果未到鏈表末尾,則長度加一,如此反復,知道鏈表結尾

3. 寫出在帶頭結點的動態單鏈表結構上求線性表的長度的演算法: int LengthList( Node *L ) 謝謝!!

int LengthList( Node *L )

{
Node *p = L->next; //將p初始指向鏈表中第一個節點的地址

int length = 0;

while(p) //當p指向的地址不為空時,繼續循環計算長度

{

++length;

p = p->next; //鏈表長度加1後,將p指向其後繼節點地址

}

return length;

}

4. 設計一個計算表頭指針為LK_h的單鏈表長度(即結點個數)的演算法

typedef struct LNode { int data; struct LNode *next; }LinkList; LinkList *LK_h; int count() { LinkList *q; q=LK_h->next; int i=0; while(q->next!=NULL) { i++; q=q->next; } return i; }

5. 求單鏈表的長度

struct node {
int data;
struct node *next;
} ;

創建單鏈表後,最後一個結點的next是NULL,據此來遍歷表,獲得長度。

void get_len( struct node *head )
{
struct node *p=head->next ;
int len=0;
while ( p )
{
len++;
p=p->next;
}
head->data=len ; //存儲長度到頭結點
}

6. 求單鏈表的長度的遞歸演算法(C語言格式)

求單鏈表的長度函數名為linklistlength
單鏈表用結構體linklist表示

int linklistlength(linklist *head)
{
if(!head) return 0;
return linklistlength(linklist *head->next)+1;
}

7. 【數據結構】求線性表的長度和線性表上的查找演算法

/* 順序存儲類型*/
typedef struct
{ ElemType data[MAXSIZE]; /*存放線性表的數組*/
int length; /* length是順序表的長度*/
}SqList; SqList L;
/* 求順序表長度*/
int ListLength(SqList L)
{return(L.length);}
/* 給定序號從順序表中查找元素*/
void ListGet(SqList L ,int i)
{ if(L.length==0) printf("順序表空\n");
else if(i<1||i>L.length) printf("查找的位置不正確\n");
else printf("順序表中第%d個元素的值為:%d\n",i,L.data[i-1]);
}
/* 從順序表中查找與給定元素值相同的元素在順序表中的位置*/
int ListLocate(SqList L, ElemType x)
{int i=0;
while(i<L.length && L.data[i]!=x)
i++;
if (i<L.length) return (i+1);
else return 0;
}

8. 求幾個有關鏈表的最基本演算法

這個也太多了!
1.循環單鏈表,且含有頭結點的
p = head->next;
for(len=0;p->next!=head;p=p->next)
{
len++ //長度加1
}
2.插入
Status ListInsert(DuLinkList L, int i, ElemType e)
{
DuLinkList p, s;
//i值不合法
if(i < 1 || i > ListLength(L) + 1) return ERROR;

//在L中確定第i個元素前驅的位置指針p
p = GetElemP(L, i - 1);

//p=NULL,即第i個元素的前驅不存在(設頭結點為第1個元素的前驅)
if(!p) return ERROR;

//給插入的數據分配空間
s = (DuLinkList)malloc(sizeof(DuLNode));

//如果為空,分配失敗
if(!s) return OVERFLOW;

//在第i-1個元素之後插入
s->data = e;
s->prior = p;
s->next = p->next;
p->next->prior = s;
p->next = s;

return OK;
}
刪除
Status ListDelete(DuLinkList L,int i,ElemType *e)
{
DuLinkList p;

// i值不合法
if(i < 1) return ERROR;

// 在L中確定第i個元素的位置指針p
p = GetElemP(L, i);

// p=NULL,即第i個元素不存在
if(!p) return ERROR;
*e = p->data;
p->prior->next = p->next;
p->next->prior = p->prior;
free(p);
return OK;
}
3.帶有頭結點
p=head->next;
head->next =NULL;
q= head;
while(p)
{
q->next = p;
q = p;
p=p->next
}
4.帶頭結點
p=head->next;
head->next = head;
q = head;
while(p!=head)
{
if(head->next = head){q->next=p;q->next = head;}
else{q->next = p;}
q = p;
}
5.帶頭結點
p = head->next;
p->prior = NULL;
q = head;
while(p)
{
q->prior = p;
q->next = p->next;
p->next->prior = q;
p->next = q;

}

9. 試寫一演算法在帶頭結點的單鏈表結構上實現線性表操作Length(L)。下面各個步驟的解釋要詳細

intListLength_L(LinkList &L)
{
int i=0;//i存儲鏈表長度,

初始為0
LinkList p=L;//p為鏈表的指針,

初始為頭指針,指向頭結點
if(p) p=p-next;//如果p指向的頭結點不為空,

p指向帶數據的第一個結點
while(p){//如果p非空,i長度加1,且指向下一個結點
p=p->next;


i++;}

return i;

//返回i,即鏈表的長度
}。

閱讀全文

與線性單鏈表長度的演算法相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:578
python員工信息登記表 瀏覽:376
高中美術pdf 瀏覽:160
java實現排列 瀏覽:512
javavector的用法 瀏覽:981
osi實現加密的三層 瀏覽:231
大眾寶來原廠中控如何安裝app 瀏覽:915
linux內核根文件系統 瀏覽:242
3d的命令面板不見了 瀏覽:525
武漢理工大學伺服器ip地址 瀏覽:148
亞馬遜雲伺服器登錄 瀏覽:524
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:929
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:250
哈夫曼編碼數據壓縮 瀏覽:425
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:349