鍊錶的一些基本操作 動態鍊錶 插入和刪除等

2021-06-25 18:30:55 字數 1825 閱讀 2242

#include

#include

#define len sizeof(struct student)

/**author:hacker_crazy

*time:2014.9.17 

*/ //結構體:學號num、分數score、結構體指標*next 

struct student;

int n;//全域性變數:記錄節點數 

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

typedef struct student * stunode;

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

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

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

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

//建立乙個新的鍊錶 

struct student * create()else

p2=p1; 

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

printf("請輸入學號和分數:");

scanf ("%d %d",&p1->num,&p1->score);

}//將節點的結尾設為空 

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("%d已經刪除!\n",num);

}else

return head;

} //依照學生學號的順序向鍊錶中插入新元素 

struct student *insert(struct student *head,struct student *newstudent)else

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

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

p0->next=p1;

}else

}//鍊錶長度增加1 

n=n+1;

printf("%d插入成功\n",newstudent->num);

return head;

}int main()

//插入操作

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

//申請len大小的空間 

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

scanf ("%d %d",&newstudent->num,&newstudent->score);

while(newstudent->num!=0)

print(head);

//return 0;

鍊錶的一些基本操作

include include typedef struct list elem,pelem typedef struct real list,plist void initialize plist mylist 初始化 int creat plist mylist1 建立鍊錶 else print...

鍊錶的一些操作

判斷兩個鍊錶是否有交點 判斷兩個單鏈表是否相交,如果相交,給出相交的第乙個點 假設兩個鍊錶都不存在環 相交的煉表示意圖如下所示。兩個沒有環的鍊錶如果是相交於某一結點,如上圖所示,這個結點後面都是共有的。所以如果兩個鍊錶相交,那麼兩個鍊錶的尾結點的位址也是一樣的。程式實現時分別遍歷兩個單鏈表,直到尾結...

一 鍊錶 插入刪除基本操作

鍊錶 一種用於儲存資料集合的資料結構 鍊錶的屬性 1.相鄰元素之間通過指標連線 2.最後乙個元素的後繼元素為null 3.鍊錶的空間可以按需分配 直到系統記憶體耗盡 4.沒有記憶體空間的浪費 但是鍊錶當中的指標需要一些額外的記憶體花銷 鍊錶和陣列的區別 1 陣列儲存在一塊連續的記憶體空間中,而鍊錶的...