207 lines
5.0 KiB
Plaintext
207 lines
5.0 KiB
Plaintext
|
/* sList.c */
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <string.h>
|
|||
|
|
|||
|
/* <20>禡<EFBFBD><E7A6A1><EFBFBD>쫬<EFBFBD>ŧi */
|
|||
|
void insert(void);
|
|||
|
void del(void);
|
|||
|
void modify(void);
|
|||
|
void display(void);
|
|||
|
void processing(void);
|
|||
|
|
|||
|
/* <20>ŧi<C5A7>@<40>ӵ<EFBFBD><D3B5>c<EFBFBD><63><EFBFBD>Ҫ<EFBFBD> */
|
|||
|
struct Node {
|
|||
|
long int id;
|
|||
|
char name[10];
|
|||
|
double score;
|
|||
|
struct Node *next;
|
|||
|
};
|
|||
|
|
|||
|
/* <20>w<EFBFBD>q<EFBFBD>H<EFBFBD>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD> */
|
|||
|
struct Node *head, *pNode, *current, *prev, temp;
|
|||
|
|
|||
|
/* <20>w<EFBFBD>q<EFBFBD>@<40><><EFBFBD>V FILE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
FILE *fptr;
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
head = (struct Node *)malloc(sizeof(struct Node));
|
|||
|
head->next = NULL;
|
|||
|
|
|||
|
/* <20>Q<EFBFBD>Τ@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϥο<CFA5><CEBF>ܥ\<5C>ඵ<EFBFBD><E0B6B5> */
|
|||
|
int choice;
|
|||
|
do {
|
|||
|
printf("<22>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD><43><EFBFBD>B<EFBFBD>@<40><><EFBFBD><EFBFBD>\n");
|
|||
|
printf("1. <20>[<5B>J<EFBFBD>@<40>`<60>I\n");
|
|||
|
printf("2. <20>R<EFBFBD><52><EFBFBD>@<40>`<60>I\n");
|
|||
|
printf("3. <20>ק<EFBFBD><D7A7>@<40>`<60>I\n");
|
|||
|
printf("4. <20><><EFBFBD>ܩҦ<DCA9><D2A6>`<60>I\n");
|
|||
|
printf("5. <20><><EFBFBD><EFBFBD>\n");
|
|||
|
printf("<22>п<EFBFBD><D0BF><EFBFBD>: ");
|
|||
|
scanf("%d", &choice);
|
|||
|
switch (choice) {
|
|||
|
case 1:
|
|||
|
insert();
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
del();
|
|||
|
break;
|
|||
|
case 3:
|
|||
|
modify();
|
|||
|
break;
|
|||
|
case 4:
|
|||
|
display();
|
|||
|
break;
|
|||
|
case 5:
|
|||
|
printf("\n<>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|||
|
exit(0);
|
|||
|
default:
|
|||
|
printf("<22><><EFBFBD>J<EFBFBD><4A><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>A<EFBFBD>Э<EFBFBD><D0AD>s<EFBFBD><73><EFBFBD>J\n");
|
|||
|
|
|||
|
}
|
|||
|
printf("\n");
|
|||
|
} while(choice != 5);
|
|||
|
getchar();
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/* <20><><EFBFBD>Ӥ<EFBFBD><D3A4>ƥѤj<D1A4>ܤp<DCA4>[<5B>J<EFBFBD>@<40>`<60>I<EFBFBD><49><EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C */
|
|||
|
void insert()
|
|||
|
{
|
|||
|
/* <20>Q<EFBFBD><51> malloc() <20>禡<EFBFBD>t<EFBFBD>m<EFBFBD>O<EFBFBD><4F><EFBFBD>鵹 n1 */
|
|||
|
pNode = malloc(sizeof(struct Node));
|
|||
|
printf("\n<>п<EFBFBD><D0BF>JID: ");
|
|||
|
scanf("%ld", &pNode->id);
|
|||
|
printf("<22>п<EFBFBD><D0BF>J<EFBFBD>m<EFBFBD>W: ");
|
|||
|
scanf("%s", pNode->name);
|
|||
|
printf("<22>п<EFBFBD><D0BF>J<EFBFBD><4A><EFBFBD><EFBFBD>: ");
|
|||
|
scanf("%lf", &pNode->score);
|
|||
|
|
|||
|
/* <20>[<5B>J<EFBFBD>@<40>`<60>I<EFBFBD><49><EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C */
|
|||
|
current = head->next;
|
|||
|
prev = head;
|
|||
|
/* <20><><EFBFBD>P<EFBFBD>_<EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>O<EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD> */
|
|||
|
if (current == NULL) {
|
|||
|
head->next = pNode;
|
|||
|
pNode->next = NULL;
|
|||
|
}
|
|||
|
/* <20>Y<EFBFBD><59><EFBFBD>O<EFBFBD>Ū<EFBFBD><C5AA>A<EFBFBD>h<EFBFBD><68><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>[<5B>J<EFBFBD><4A><EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C */
|
|||
|
else {
|
|||
|
while ((current != NULL) && (pNode->score < current->score)) {
|
|||
|
prev = current;
|
|||
|
current = current->next;
|
|||
|
}
|
|||
|
prev->next = pNode;
|
|||
|
pNode->next = current;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* <20>R<EFBFBD><52><EFBFBD>Y<EFBFBD>@<40>`<60>I*/
|
|||
|
void del()
|
|||
|
{
|
|||
|
long int deleteID;
|
|||
|
/* <20>N current <20><><EFBFBD>Ы<EFBFBD><D0AB>V head <20><><EFBFBD>U<EFBFBD>@<40>Ӹ`<60>I */
|
|||
|
current = head->next;
|
|||
|
prev = head;
|
|||
|
/* <20><><EFBFBD>P<EFBFBD>_<EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>O<EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD> */
|
|||
|
if (current != NULL) {
|
|||
|
/* <20>Y<EFBFBD><59><EFBFBD>O<EFBFBD>Ū<EFBFBD><C5AA>A<EFBFBD>h<EFBFBD><68><EFBFBD>M<EFBFBD><4D><EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>`<60>I */
|
|||
|
printf("\n<>п<EFBFBD><D0BF>J<EFBFBD><4A><EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD> ID: ");
|
|||
|
scanf("%ld", &deleteID);
|
|||
|
/* <20><><EFBFBD>M<EFBFBD><4D><EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>`<60>I */
|
|||
|
while ((current != NULL) && (current->id != deleteID)) {
|
|||
|
prev = current;
|
|||
|
current = current->next;
|
|||
|
}
|
|||
|
/* <20>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD>N<EFBFBD><4E><EFBFBD>R<EFBFBD><52> */
|
|||
|
if (current != NULL) {
|
|||
|
prev->next = current->next;
|
|||
|
current->next = NULL;
|
|||
|
printf("ID: %ld <20>w<EFBFBD>R<EFBFBD><52>\n", current->id);
|
|||
|
free(current);
|
|||
|
}
|
|||
|
/* <20>Y<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>䤣<EFBFBD><E4A4A3><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52><EFBFBD>`<60>I<EFBFBD><49><EFBFBD>T<EFBFBD><54>*/
|
|||
|
else {
|
|||
|
printf("\n<>䤣<EFBFBD><E4A4A3><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>`<60>I\n");
|
|||
|
}
|
|||
|
}
|
|||
|
/* <20>Y<EFBFBD>O<EFBFBD>Ū<EFBFBD><C5AA>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>O<EFBFBD>Ū<EFBFBD><C5AA>T<EFBFBD><54> */
|
|||
|
else {
|
|||
|
printf("<22>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>O<EFBFBD>Ū<EFBFBD>\n");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* <20>ק<EFBFBD><D7A7>Y<EFBFBD>@<40>`<60>I */
|
|||
|
void modify()
|
|||
|
{
|
|||
|
struct Node *temp;
|
|||
|
long int modifyID;
|
|||
|
double modifyScore;
|
|||
|
int flag = 0;
|
|||
|
printf("\n<>п<EFBFBD><D0BF>J<EFBFBD><4A><EFBFBD>ק<EFBFBD><D7A7>`<60>I<EFBFBD><49> ID: ");
|
|||
|
scanf("%ld", &modifyID);
|
|||
|
current = head->next;
|
|||
|
prev = head;
|
|||
|
|
|||
|
/* <20><><EFBFBD>M<EFBFBD><4D><EFBFBD>ק諸<D7A7>`<60>I */
|
|||
|
while (current != NULL) {
|
|||
|
if (current->id == modifyID) {
|
|||
|
printf("<22>ثe<D8AB><65><EFBFBD>ק<EFBFBD><D7A7>`<60>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>Ʀp<C6A6>U:\n");
|
|||
|
printf("%6ld %10s %8.1f\n\n", current->id,
|
|||
|
current->name, current->score);
|
|||
|
printf("<22>п<EFBFBD><D0BF>J<EFBFBD><4A><EFBFBD>ק諸<D7A7><EFAABA><EFBFBD><EFBFBD>: ");
|
|||
|
scanf("%lf", &modifyScore);
|
|||
|
current->score = modifyScore;
|
|||
|
flag = 1;
|
|||
|
break;
|
|||
|
}
|
|||
|
else {
|
|||
|
prev = current;
|
|||
|
current = current->next;
|
|||
|
}
|
|||
|
}
|
|||
|
/* <20>P<EFBFBD>_<EFBFBD>O<EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ק諸<D7A7>`<60>I */
|
|||
|
if (flag != 0) {
|
|||
|
/* <20>N current <20><><EFBFBD>`<60>I<EFBFBD><49><EFBFBD>w<EFBFBD><77> temp */
|
|||
|
temp = current;
|
|||
|
prev->next = current->next;
|
|||
|
/* <20>N temp <20>`<60>I<EFBFBD>[<5B>J<EFBFBD><4A><EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C */
|
|||
|
current = head->next;
|
|||
|
prev = head;
|
|||
|
while ((current != NULL) &&
|
|||
|
(temp->score < current->score)) {
|
|||
|
prev = current;
|
|||
|
current = current->next;
|
|||
|
}
|
|||
|
prev->next = temp;
|
|||
|
temp->next = current;
|
|||
|
}
|
|||
|
else {
|
|||
|
printf("<22>䤣<EFBFBD><E4A4A3><EFBFBD><EFBFBD><EFBFBD>ק諸<D7A7>`<60>I\n");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD><43><EFBFBD>Ҧ<EFBFBD><D2A6>`<60>I<EFBFBD><49><EFBFBD><EFBFBD> */
|
|||
|
void display()
|
|||
|
{
|
|||
|
/* <20>L<EFBFBD>X<EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>Ҧ<EFBFBD><D2A6>`<60>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
current = head->next;
|
|||
|
|
|||
|
/* <20>˵<EFBFBD><CBB5>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>O<EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD> */
|
|||
|
if (current != NULL) {
|
|||
|
printf("\n%6s %10s %8s\n", "ID", "Name", "Score");
|
|||
|
while (current != NULL) {
|
|||
|
printf("%6ld %10s %8.1f\n", current->id,
|
|||
|
<EFBFBD>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@current->name, current->score);
|
|||
|
/* <20>N<EFBFBD><4E><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD>U<EFBFBD>@<40>Ӹ`<60>I */
|
|||
|
current = current->next;
|
|||
|
}
|
|||
|
}
|
|||
|
/* <20>Y<EFBFBD>O<EFBFBD>Ū<EFBFBD><C5AA>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD> */
|
|||
|
else {
|
|||
|
printf("\n<>쵲<EFBFBD><ECB5B2><EFBFBD>C<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD>\n");
|
|||
|
}
|
|||
|
}
|
|||
|
|