《程式設計基礎》上機實驗報告
學號:201420224912
姓名:許培鑫
班級:計算機149
日期:2015-5-
26指導教師:
成筠成績:__________
(1)有兩個鍊錶,其結點包括學號、成績。要求合併兩個鍊錶並按學號公升序排列。
1、實驗內容:
#include#include#define len sizeof(struct student)
struct student;
struct student *head ;
struct student *head1;
struct student *create()
else
p2=p1;
p1=(struct student *)malloc(sizeof(len));
printf("請輸入學生的學號和成績,當學生學號為0時結束輸入:");
scanf("%d %d",&(p1->studid),&(p1->score));
}p2->next=null;
return head;
} struct student *create1()
else
p2=p1;
p1=(struct student *)malloc(sizeof(len));
printf("請輸入學生的學號和成績,當學生學號為0時結束輸入:");
scanf("%d %d",&(p1->studid),&(p1->score));
}p2->next=null;
return head1;
}void print(struct student *h)
else
}}main()
p->next=p1;
printf("合併後的鍊錶是\n");
print(head);
p1=head;
while(p1->next!=null)
for(p=head;p!=null;p=p->next)
for(p1=p->next;p1!=null;p1=p1->next)
} printf("排序後是\n");
print(head);
}
1、執行結果:
(2)鍊錶的結點包括學號、姓名。從鍵盤輸入乙個學號,如果該學號與鍊錶中某一結點的學號相同,則刪去該結點。
2、實驗內容:
#include#include#define len sizeof(struct student)
struct student;
struct student *head ;
struct student *create()
else
p2=p1;
p1=(struct student *)malloc(sizeof(len));
printf("請輸入學生的學號和姓名,當學生學號為0時結束輸入:");
scanf("%d %s",&(p1->studid),(p1->name));
}p2->next=null;
return head;
} struct student *delete(struct student * head,int num)
//遍歷節點,判斷當前節點是不是需要刪除的節點及是否為尾節點
//如果找到相應節點,或者已經遍歷到尾節點就跳出迴圈
while(p1->studid!=num&&p1->next!=null)
//判斷是否找到相應節點
if(p1->studid==num)
else
printf("學號為%d 的節點已刪除.\n",num);
}else
return head;
}void print(struct student *h)
else
}}main()
2、執行結果:
(3)有a、b兩個鍊錶,其結點包括學號、姓名。要求從a鍊錶中刪去與b鍊錶中有相同學號的結點。
3、實驗內容:
#include#include#define len sizeof(struct student)
struct student;
struct student *head ;
struct student *head1;
struct student *create()
else
p2=p1;
p1=(struct student *)malloc(sizeof(len));
printf("請輸入學生的學號和姓名,當學生學號為0時結束輸入:");
scanf("%d %s",&(p1->studid),(p1->name));
}p2->next=null;
return head;
} struct student *create1()
else
p2=p1;
p1=(struct student *)malloc(sizeof(len));
printf("請輸入學生的學號和姓名,當學生學號為0時結束輸入:");
scanf("%d %s",&(p1->studid),p1->name);
}p2->next=null;
return head1;
}struct student *delete(struct student * head,int num)
while(p1->studid!=num&&p1->next!=null)
if(p1->studid==num)
else
}return head; }
void print(struct student *h)
else
}}main()
if(i!=-1)
} printf("處理後的鍊錶的\n");
print(head);
}
3、實驗結果:
(4)將乙個鍊錶按逆序排列,即鏈頭作鏈尾,鏈尾作鏈頭。
4、實驗內容
#include#include#define len sizeof(struct student)
struct student;
struct student *head ;
struct student *create()
else
p2=p1;
p1=(struct student *)malloc(sizeof(len));
printf("請輸入學生的學號和姓名,當學生學號為0時結束輸入:");
scanf("%d %s",&(p1->studid),(p1->name));
}p2->next=null;
return head;
}struct student *reverse(struct student *p)
hea=p2;
return hea;
}void print(struct student *h)
else
}}main()
4、執行結果
鍊錶 C語言實現(一)
由於cherry不太擅長c,故本系列文章中難免會有紕漏,但cherry會盡力把演算法的思路寫清楚啦!typedef 作用 給型別起別名 typedef struct listnode ptrtonode typedef ptrtonode position 起別名為 position typedef...
鍊錶的C語言實現(一
一 為什麼用動態記憶體分配 但我們未學習鍊錶的時候,如果要儲存數量比較多的同型別或同結構的資料的時候,總是使用乙個陣列。比如說我們要儲存乙個班級學生的某科分數,總是定義乙個float型 存在0.5分 陣列 float score 30 但是,在使用陣列的時候,總有乙個問題困擾著我們 陣列應該有多大?...
鍊錶的C語言實現
編輯 c巨集例項 以下 摘自linux核心2.6.21.5原始碼 部分 展示了鍊錶的另一種實現思路,未採用ansi c標準,採用gnu c標準,遵從gpl版權許可。struct list head define list head init name define list head name st...