include
typedef int elemtype;
typedef struct linknode
{
elemtype data;
struct linknode *next;
}nodetype;
nodetype* create()
{
elemtype d;
nodetype *h = NULL,*s,*t;
elemtype i = 1;
printf("create link Node:\n");
while (1)
{
printf("please input %d node data is:",i++);
scanf("%d",&d);
if (d == 0)
{
break;
}
if (d == 1)
{
//创建链表的标头
h = (nodetype*)malloc(sizeof(nodetype));
h->data = d;
h->next=NULL;
//t指向链表标头
t = h;
}
else
{
//性创建个节点
s = (nodetype*)malloc(sizeof(nodetype));
s->data = d;
s->next = NULL;
//把新节点添加到链表中
t->next = s;
//t指向到最后结点
t = s;
}
}
return h;
}
void disp(nodetype *head)
{
nodetype *temp = head;
printf("output this link Node:\n");
if (temp == NULL) //空链表判断
{
printf("this link is NULL!\n");
}
while (temp) //逐个结点输出
{
printf("%d,",temp->data);
temp = temp->next;
}
printf("\n");
}
void deletenode(nodetype *p) //从p中删除结点q
{
nodetype *q;
if (p->next != NULL || p->data<0)
{
q = p->next; //使得q为p的直接后继
p->next = q->next; //先保存p后继结点的后继,删除p后面的直接后继结点q
free(q); //释放空间
}
}
int main()
{
nodetype *head;
head = create(); //创建链表
disp(head); //显示链表
disp(head); //显示链表
return 0;
}