写好了,你看下
#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
温馨提示:答案为网友推荐,仅供参考