單鏈表的逆置

2021-07-11 13:39:06 字數 1341 閱讀 1977

實驗一   線性表的基本操作的實現與應用

一、【實驗目的】

掌握線性表的插入與刪除等基本運算

掌握單鏈表的插入與刪除等基本運算

二、【實驗內容】

1、 除錯順序表、單鏈表的基本運算演算法。

2、 有乙個單鏈表的第乙個節點指標為head

,程式設計實現將該單鏈表逆置,即最後乙個節點變成第乙個節點,原來倒數第二個節點變成第二個節點,如此等等,在逆置中不能建立新的單鏈表。

3、 編寫程式,將若干整數從鍵盤輸入,以單鏈表形式儲存起來,然後計算單鏈表中結點的個數(其中指標p

指向該鍊錶的第乙個結點)。

鍵盤輸入若干個整數,按輸入資料逆序建立乙個帶頭結點的單鏈表。

#include #include #include using namespace std;

typedef int elemtype;

typedef struct slink

slink;

void initlist(slink *&l) /*l作為引用型引數*/

int getlength(slink *l) /*求線性表的長度*/

return i;

}int getelem(slink *l,int i,elemtype &e) /*求線性表中第i個元素*/

e=head->data;

return(1); /*返回1*/

}int inselem(slink *l,elemtype x,int i) /*插入結點*/

s->next=head->next; /*將*s的next域指向*p的下乙個結點(即第i個結點)*/

head->next=s; /*將*p的next域指向*s,這樣*s變成第i個結點*/

return 1; /*插入運算成功,返回1*/

}int delelem(slink *l,int i) /*刪除結點*/

q=p->next; /*由q指向第i個結點*/

p->next=q->next; /*將*p的next指向*q之後結點,即從鍊錶中刪除第i個結點*/

free(q); /*釋放第i個結點占用的空間*/

return 1; /*刪除運算成功,返回1*/

}void displist(slink *l) /*輸出單鏈表*/

printf("\n");

}int main ()

cout<<"輸出原鍊錶:"

cout<<"輸出逆置後的鍊錶:"<}

單鏈表逆置

單鏈表逆置 include include define item num 10 typedef struct tagnode node node linklist create void linklist destroy node head void linklist print node hea...

單鏈表逆置

name 單鏈表逆置 author 巧若拙 date 22 11 14 16 13 description 分別用遞迴和非遞迴兩種方式實現單鏈表 不含頭結點 的逆置 include include include typedef char elemtype typedef int status 函式...

單鏈表逆置

最近在leetcode oj上刷題,將一些演算法題的解法記錄下來,也期待一些新的更好的方法。題目是這樣滴 206.reverse linked list reverse a singly linked list.hint a linked list can be reversed either it...