台灣最大程式設計社群網站
線上人數
3122
 
會員總數:245964
討論主題:189547
歡迎您免費加入會員
討論區列表 >> C/C++ >> 關於雙向鏈結串列
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於雙向鏈結串列
價值 : 10 QP  點閱數:253 回應數:0
樓主


門外漢
0 1
4 0
發送站內信


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void display();
void AddData();
void del();


int main()
{
int choice;
char name;
while(1)
{



printf("1.insert \t 2.delete\t 3.modify\t 4.show\t 5.quit :");
scanf("%d",&choice);

if(!choice) break;

switch(choice)
{


case 1 : AddData(); break;
case 2 : del(); break;
case 3 : printf("wait");
case 4 : display(); break;
case 5 : printf("bye bye");
return 0;
default :printf("without this function\n"); main();


}
}


}



struct list1

{
struct list1 *Llink;
int score;
char name[255];
struct list1 *Rlink;
};

struct list1 *head = NULL;



void display()
{
struct list1 *current = NULL;
int score;
char input[255];
current = head;

while(current != NULL)
{
printf("%s, %d pt\n", current->name, current->score);
current = current->Rlink;
}
if(head==NULL)
{
printf("empty\n");
}

}
void AddData()
{
static struct list1 *Llink = NULL;
struct list1 *current = NULL;
char input[255];
int score;

printf("name = ");
scanf("%s",&input);
printf("score. = ");
scanf("%d",&score);


current = (struct list1 *)malloc(sizeof(struct list1));
if (current == NULL) exit(EXIT_FAILURE);

current->score = score;
strncpy(current->name, input, 254);
current->name[255] = '\0';

current->Rlink = NULL;

if (head == NULL) //第一筆資料
{
head = current;
head->Llink = NULL;
}
else
{
current->Llink = Llink;// now->Llink儲存上一筆的位置
Llink->Rlink = current;//上一筆資料的下一個位置 就是現在這個位置
}
Llink = current;//儲存目前的位置

}


void del()
{
char ban;
struct list1 *current;
struct list1 *ptr;
struct list1 *Rlink;
struct list1 *Llink;
struct list1 *prev;
current = head->Rlink;
printf("who you want to delete:");
scanf("%s",&ban);

if(head->Rlink==NULL)
{
printf("empty");
}

while(current!=NULL&&strcmp(current->name,ban)!=0)
{
ptr = current;
current = current->Rlink;
}


if(current!=NULL)
{
ptr->Rlink=current->Rlink;
current->Llink=current->Rlink;

free(current);
printf("%s is deleted\n");
}

else
{
ptr->Rlink=NULL;
printf("this data is not exist\n");
}



}

想請問各位,這個作業是用雙向鏈結串列去做一個能夠輸入學生姓名、成績,還有能用名字去刪除與修改成績的程式,
修改功能我還不知道要怎麼寫,但是現在在del()刪除函式這邊我在呼叫它的時候,程式會停止運作
想請教高手,del()函式裡有哪裡出了問題,謝謝各位






搜尋相關Tags的文章: [ 雙向 ] , [ 鏈結 ] , [ c ] ,
本篇文章發表於2020-04-18 21:24
目前尚無任何回覆
   

回覆
如要回應,請先登入.