帶頭節點單鏈表的反轉(遞迴和非遞迴的實現)

2021-09-29 06:12:37 字數 953 閱讀 8492

#includeusing namespace std;

typedef class student

*list,lists;

void reverse_list(list l,int k); //k 代表反轉幾個節點

void printlist(list l) ;//遞迴列印

void insert_list(list l,int e);//插入

void creat(list &l);

void dg_reverse(list l,list &temp,list head);//帶頭節點的單鏈表的反轉遞迴 l為

int main()

printlist(l);

cout<>k;

reverse_list(l,k);

printlist(l);*/

list temp,head=l;

dg_reverse(l,temp,head);

printlist(l);

coutl=s;}}

void insert_list(list l,int e)//插入

list s=new lists;

s->next=l->next;

s->scores=e;

l->next=s;

}void printlist(list l) //遞迴列印

else

}void reverse_list(list l,int k) //k 代表反轉幾個節點 (非遞迴)

pre_news->next=temp;

l->next=news; //關鍵點

}void dg_reverse(list l,list &temp,list head)//帶頭節點的單鏈表的反轉遞迴 l為

if(l->next!=null)

else

}}

單鏈表反轉(遞迴和非遞迴)

單鏈表反轉有遞迴和非遞迴兩種演算法。下面定義節點 cpp view plain copy typedef struct listnodelistnode 在遞迴演算法中的做法是 1找到最後乙個節點和倒數第二個節點,把最後乙個節點設為頭節點的後繼 2反轉這兩個節點 3倒數第三個和第四個節點重複執行步驟...

單鏈表反轉(遞迴和非遞迴)

單鏈表反轉有遞迴和非遞迴兩種演算法。下面定義節點 typedef struct listnodelistnode 在遞迴演算法中的做法是 1找到最後乙個節點和倒數第二個節點,把最後乙個節點設為頭節點的後繼 2反轉這兩個節點 3倒數第三個和第四個節點重複執行步驟2 其中注意,鍊錶是以節點後繼為null...

單鏈表反轉遞迴與非遞迴演算法

1.如下 1 include 2 include 3 4using namespace std 56 struct node 715 16 17 node createlist int elem,int length 1825 return p 26 27 28void destroylist no...