鍊錶演算法示例

2021-08-09 08:11:32 字數 2063 閱讀 1423

輸入乙個鍊錶的頭結點,從尾到頭反過來印出來

具體程式:

可以將鍊錶的插入,刪除,移除等程式寫入,標頭檔案。cpp中,然後使用標頭檔案呼叫的方式#include "..\utilistise\list.h"來呼叫即可

由於鍊錶順序 然後反轉的實現是實現後入後出的方式,與棧相同,可以使用stack

宣告: void printlist reversing_iteralively(listnode*phead)

std::stacknodes;

的方式宣告和使用棧

例如:一下是鍊錶的具體使用:

#include #include #define len sizeof(struct student)

/*----------------資料定義----------------------*/

//定義乙個學生資訊的結構體,包括學號,姓名和結構體型別的指標

struct student

;typedef struct student * stunode;

int n=0; //全域性變數,記錄鍊錶的長度

/*---------------函式宣告---------------------*/

stunode create(); //建立乙個新的鍊錶

void print(stunode head); //通過傳入的煉表頭指標列印整個鍊錶

stunode delete(stunode head,int num); //通過傳入的煉表頭指標和學生學號刪除節點

stunode insert(stunode head,stunode newstu); //依照學生學號的順序向鍊錶中插入新元素

/*---------------函式定義----------------------*/

struct student *create()

else

p2=p1;

p1=(struct student *)malloc(len);

printf("請輸入學生的學號和姓名:");

scanf("%ld %s",&p1->num,p1->name);

}//將尾節點的指標置為null

p2->next=null;

return head;

}void print(struct student *head)

else

}}struct student *delete(struct student * head,int num)

//遍歷節點,判斷當前節點是不是需要刪除的節點及是否為尾節點

//如果找到相應節點,或者已經遍歷到尾節點就跳出迴圈

while(p1->num!=num&&p1->next!=null)

//判斷是否找到相應節點

if(p1->num==num)

else

n=n-1;

printf("%ld 節點已刪除.\n",num);

}else

return head;

}struct student *insert(struct student * head,struct student * newstu)

else

//找到乙個比新學號大的節點

if(p0->num <= p1->num)

else

p0->next=p1;

}else

}//鍊錶長度加1

n=n+1;

printf("%ld 插入成功!\n",newstu->num);

return head;

}void main()

printf("請輸入要插入的節點:");

stu=(struct student *)malloc(len);

scanf("%ld %s",&stu->num,stu->name);

while(stu->num!=0)

print(head);

}

演算法 鍊錶 鍊錶分隔(鍊錶劃分)

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 兩個臨時頭結點和尾節點,組成兩個鍊錶,分別存放較小和較大節點 完成後...

PHP鍊錶操作簡單示例

在php中執行資料結構,基本都是用陣列模擬的,只是用一直思想而已。今天遇到的這個問題是,兩個鍊錶進行合併。鍊錶合併效果圖 問題描述 a鍊錶是模版鍊錶,b鍊錶的長度不確定,a,b二個鍊錶結合後形成c鍊錶。說一下程式設計思想 a鍊錶是模版鍊錶所以在運算完成了,長度了唯一不變的。而b鍊錶的長度是不確定的。...

鍊錶演算法之鍊錶分化

對於乙個鍊錶,我們需要用乙個特定閾值完成對它的分化,使得小於等於這個值的結點移到前面,大於該值的結點在後面,同時保證兩類結點內部的位置關係不變。給定乙個鍊錶的頭結點head,同時給定閾值val,請返回乙個鍊錶,使小於等於它的結點在前,大於等於它的在後,保證結點值不重複。測試樣例 3 思路 新建兩個鍊...