目的 想要达到链表内容的上移
疑问 1 不清楚如何进行指针的移动
2 函数还未执行就以退出
typedef struct Song {
char name[30];//歌名
char singer[40];//演唱者
int time;//播放次数
struct Song *Next;
//指向下一首歌曲地址
} SONG;
void Moveup() ;//上移函数
struct Song *current = NULL;
//新歌曲地址
struct Song *head;
//第一首歌曲地址
struct Song *tail;
//最后一首歌曲地址
void Moveup() {
printf("请您输入需要上移的歌曲名称:\n");
SONG *previous;
SONG *target;
previous = head;
target = previous->Next;
char SongName[30], bottle[30];
getchar();
scanf("%s", &SongName);
if (previous->name == NULL) {
printf("您还未添加歌曲");
} else if (target->name == NULL) {
printf("您只添加了一首歌曲");
} else if (strcmp(previous->name, SongName) == 0) {
printf("您所要移动的歌曲已在第一位");
} else if (strcmp(target->name, SongName) == 0 ) {
/*strcpy(bottle, target->name);
strcpy(target->name, previous->name);
strcpy(previous->name, bottle);
strcpy(bottle, target->singer);
strcpy(target->singer, previous->singer);
strcpy(previous->singer, bottle);*/
} else {
while (target->name) {
previous = target;
target = previous->Next;
if (strcmp(target->name, SongName) == 0 ) {
/*strcpy(bottle, target->name);
strcpy(target->name, previous->name);
strcpy(previous->name, bottle);
strcpy(bottle, target->singer);
strcpy(target->singer, previous->singer);
strcpy(previous->singer, bottle); */
}
}
}
}