//
最近開設了資料結構的課程,我會整理成乙個系列,幫助自己整理和鞏固知識點。
請完成下列演算法填空現對單鏈表的逆置儲存,逆置儲存是指將元素線性關係逆置後的鍊錶儲存,例如(a0,a1,a2),關係逆置後為(a2,a1,a0).
單鏈表結點node和單鏈表singlelist結構體定義如下:
typedef
struct node
node;
typedef
struct singlelist
singlelist;
void
invert
(singlelist *l)
}
void
invert
(singlelist *l)
}
這裡的思路是源於l->first=null; 題目要把鍊錶首位址置為空,是要重新排列鍊錶。
第一次迴圈,將q指向第二個結點,把第乙個結點取下,然後拼到煉表頭結點上,然後p指標向後移;
第二次迴圈,將q指向第三個結點,把第二個結點取下,然後拼到頭結點後、第乙個結點前,然後p指標後移。以此類推,直到p移到了原鍊錶的尾部結束迴圈。
完成下列演算法填空,將兩個有序遞增的帶表頭結點的單鏈表合併為乙個有序遞增的單鏈表。
鍊錶結點node和鍊錶singlelist結構體定義如下:
typedef
struct node
node;
typedef
struct headerlist
headerlist;
void
mergelist1
(headerlist *la,headerlist *lb,headerlist *lc)
else
if(pa->element>pb->element)
else
lc->n++;}
pc->link=pa?pa:pb;
//插入剩餘段 lc->n+=pa?la->n:lb->n;
}
while
(pa && pb)
else
if(pa->element>pb->element)
else
lc->n++;}
pc->link=pa?pa:pb;
}
這題可以根據上下步驟解答。畫圖後思路清晰簡單~
請完成演算法填空,實現帶表頭結點的單鏈表形式實現的佇列上的元素入隊與出隊操作,佇列和元素結點結構體定義如下:
typedef
struct node
node;
typedef
struct queue
queue;
void
enqueue
(queue *q, elemtype x)
void
dequeue
(queue *q)
void
enqueue
(queue *q, elemtype x)
void
dequeue
(queue *q)
這題是對鏈佇列的入隊和出隊操作,分別從對尾和隊頭進行增加結點和刪除結點的操作。
首先,這裡的刪除隊頭結點是邏輯刪除,只是不再被指向。其次,刪除頭結點是front指向的第乙個結點的下乙個結點。
帶表頭結點的一元多項式結構定義如下:
typedef
struct pnode
pnode;
typedef
struct
polynominal;
編寫程式,實現一元多項式的建立、輸出、銷毀、相加、相乘操作。
int
create
(polynominal *l)
//初始化頭結點
l->head->link =
null
; p = l->head;
printf
("請輸入一元多項式的最高次冪的次數。\n");
scanf
("%d"
,&power)
; l->head->exp = power;
for(i=power; i>=
0; i--
)return ok;
}
int
output
(polynominal l)
p = l.head->link;
while
(p)if
(p->coef !=0)
p = p->link;
}return ok;
}
void
destory
(polynominal *l)
}
int
add(polynominal l1, polynominal l2, polynominal *l)
while
(q&&p)
l->head = l1.head;
}elseif(
(n1 - n2)
<0)
//l1比l2短
while
(q && p)
l->head = l2.head;
}else
//l1和l2一樣長
l =&l1;
}return ok;
}
void
multiply
(polynominal l1, polynominal l2, polynominal* l)
p = l->head->link;
pnode* a = l1.head->link;
pnode* b = l2.head->link;
while
(a) p->coef +
= a->coef * b->coef;
p = l->head->link;
b = b->link;
} a = a->link;
}}
在這題中,我在頭結點插入了當前一元多項式的最高次冪,方便後續操作。
所有都以最高次冪為前提進行操作。
比如:
單鏈表相關題目
1.獲取鍊錶中的有效節點數 2.方法 獲取到單鏈表的節點的個數 如果是帶頭結點的鍊錶,需求不統計頭節點 3.public static intgetlength hero head 7.int length 0 8.定義乙個輔助的變數,這裡我們沒有統計頭節點 9.hero temp head.get...
考研相關的單鏈表題目
結構 typedef int elemtype typedef struct lnode linkedlist 將乙個沒有頭結點的結點資料為字元的單鏈表,分解成還有字母字元 數字字元和其他字元的三個帶頭節點的迴圈鍊錶 void onetothree linkedlist l,linkedlist l...
LeetCode單鏈表相關題目
目錄 1.移除鍊錶元素 刪除鍊錶中等於給定值val的所有節點 2.反轉乙個鍊錶 3.找出鍊錶的中間結點 4.輸出鍊錶中倒數第k個結點 5.合併兩個有序鍊錶,合併後依然有序 6.找出兩個單鏈表相交的起始結點 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 definition ...