50分求用c语言编写链表程序

结构可自定义,需要实现链表的节点添加和删除功能,2,写出改程序的编译命令和执行命令,3,写出可以用于自动化编译该程序的makefile 文件

写好了,你看下

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct node
{
int data;
struct node *next;
}Node;

void InitList(Node **head);
void CreateList(Node **head);
void InsertList(Node **head, int key);
void DeleteList(Node **head, int key);
void PrintList(Node **head);

//初始化链表
void InitList(Node **head)
{
(*head) = (Node *)malloc(sizeof(Node));
(*head)->next = NULL;
}

//创建链表
void CreateList(Node **head)
{
int i;

printf("您好,请输入您要插入的数据:\n");
scanf("%d", &i);
while(i != 0)
{
InsertList(head, i);
scanf("%d", &i);
}
}

//插入链表
void InsertList(Node **head, int key)
{
Node *p, *q, *s;

q = (*head);
p = (*head)->next;
while(p)
{
q = p;
p = p->next;
}
s = (Node *)malloc(sizeof(Node));
s->data = key;
s->next = NULL;

q->next = s;
}

//删除链表
void DeleteList(Node **head, int key)
{
Node *p, *q;

q = (*head);
p = (*head)->next;
while(p && p->data != key)
{
q = p;
p = p->next;
}
if(p)
{
q->next = p->next;
free(p);
p = NULL;
}
}

//输出链表
void PrintList(Node **head)
{
Node *p;

p = (*head)->next;
while(p)
{
printf("%d\n", p->data);
p = p->next;
}
}

int main(void)
{
Node *head;
int i;

InitList(&head);

CreateList(&head);
printf("删除前的数据:\n");
PrintList(&head);

printf("请输入您要删除的数据:\n");
scanf("%d", &i);
DeleteList(&head, i);
printf("删除后的数据:\n");
PrintList(&head);

return 0;
}

Makefile:
#the simplest example
OBJS = tmp.o
CC = gcc
CFLAGS = -Wall -O -g
tmp: $(OBJS)
$(CC) $(OBJS) -o tmp

tmp.o: tmp.c
$(CC) $(CFLAGS) -c tmp.c -o tmp.o

clean:
rm -f *.o *~ tmp

您好,请输入您要插入的数据:
1 2 3 4 0
删除前的数据:
1
2
3
4
请输入您要删除的数据:
1
删除后的数据:
2
3
4
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-26
UP!UP!UP!
相似回答
大家正在搜