#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 陣列儲存在一塊連續的記憶體空間中,而鍊錶的...