|
> 下記プログラムにデータを追加する関数をつくりたいのですが、
> うまくできません。
【掲示板ご利用上の注意】をよく読んで、ソースの添付を
うまくやってください。
次のプログラムは参考になりますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
char *data;
struct Node *prev, *next;
} Node;
void init(Node *p) { p->prev = p->next = p; }
void print(Node *lp)
{
Node *p = lp;
while ((p = p->next) != lp) printf("%s ", p->data);
printf("\n");
}
void add_tail(Node *lp, const char *data)
{
Node *p = malloc(sizeof(Node));
p->data = strdup(data);
p->prev = lp->prev; p->next = lp;
lp->prev->next = p; lp->prev = p;
}
void add_head(Node *lp, const char *data)
{
Node *p = malloc(sizeof(Node));
p->data = strdup(data);
p->prev = lp; p->next = lp->next;
lp->next->prev = p; lp->next = p;
}
int main(void)
{
Node list;
init(&list);
add_tail(&list, "333"); /* 333 */
add_tail(&list, "444"); /* 333 444 */
add_tail(&list, "555"); /* 333 444 555 */
add_head(&list, "222"); /* 222 333 444 555 */
add_head(&list, "111"); /* 111 222 333 444 555 */
print(&list);
return 0;
}
|