[問題] 如何把字串當成linked list中的item
大家好:
我今天在使用linked list 時侯發生一個問題,
以下是為所宣告的linked list結構
typedef struct stack *stack_pointer;
typedef struct element *history;
struct stack {
history data;
stack_pointer link;
};
struct element {
char *date;
char *weight;
};
我想要在我的linked list 中的每個node插入兩個element 分別是 date 和 weight
可是我在插入的部份出了些問題!!
以下為我插入
void add (stack_pointer *top, char *date, char *weight)
{
// date 和 weight 為我想要插入的element
stack_pointer temp = (stack_pointer) malloc (sizeof(stack_pointer));
if(temp==NULL){
printf("The memory is full\n");
exit(0);
}
temp->data->date=(char *)malloc(sizeof(date));
temp->data->date=date;
temp->data->weight=(char *)malloc(sizeof(weight));
temp->data->weight=weight;
temp->link= *top;
*top=temp;
}
上面宣告成
temp->data->date=(char *)malloc(sizeof(date));
我是想說原先temp->data->date 沒有給予空間儲存 date
所以我在那裏宣告一塊記憶體空間給date儲存!!
我原先是寫成
temp->data->date=date;
temp->data->weight=weight;
沒有宣告記憶體空間給temp->data->date !
不過那時候執行結果也和我下面所描素的執行結果一樣!!! 囧
所以我才把這兩行留著!!
temp->data->date=(char *)malloc(sizeof(date));
temp->data->weight=(char *)malloc(sizeof(weight));
我剛剛有試了一下strcpy (temp->data->date,date); 這方式 但還是不行ˊ.ˋ
囧~ 剛打錯
============================================================
但是這樣子假設我插入: AAAA 777
ABBB 888
CCCC 898
DDDD 222
我把這個list中的element的值給印出來看時,我發現他的結果
都為:
DDDD 222
DDDD 222
DDDD 222
DDDD 222
想請問一下大家我是不是哪裡寫錯了!!!!
以下是我完整的code
http://rafb.net/p/YsTiFo73.html
我讀進來date.dat的格式為
2009/3/18 44
2009/3/18 11
2009/3/18 11
2009/3/18 11
2009/3/18 11
2009/3/18 11
2009/3/18 1111
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.72.235
※ 編輯: ppp168p 來自: 140.116.72.235 (03/19 23:40)
→
03/20 00:03, , 1F
03/20 00:03, 1F
→
03/20 00:18, , 2F
03/20 00:18, 2F
→
03/20 00:18, , 3F
03/20 00:18, 3F
※ 編輯: ppp168p 來自: 59.113.48.121 (03/20 00:58)
→
03/20 01:42, , 4F
03/20 01:42, 4F
※ 編輯: ppp168p 來自: 59.113.48.121 (03/20 08:53)
※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:02)
※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:02)
※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:11)
※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:11)
討論串 (同標題文章)