单向链表编程思路:
1.创建一个链表,大小自定义
2.打印链表内容
3.删除指定节点
4.插入节点
5.释放链表
#include <stdio.h>
#include <stdlib.h>#include <string.h>
typedef int datatype;
typedef struct node{
datatype data;
struct node *next;
}node;
node *head=NULL;
void create(int n)
{
node *p1,*p2;
int i;
for(i=n;i>0;i--)
{
p1=(node *)malloc(sizeof(node));
if(p1==NULL)
{
perror("p1");
exit(-1);
}
printf("the num:");
scanf("%d",&(p1->data));
if(head==NULL)
{
head=p1;
p2=p1;
}else{
p2->next=p1;
p2=p1;
}
}
p2->next=NULL;
}
void insert(datatype num)
{
node *tmp;
node *p=(node*)malloc(sizeof(node));
if(p==NULL)
{
perror("p");
exit(-1);
}
p->data=num;
//tmp=head->next;
//head->next=p;
//p->next=tmp;
p->next=head;
head=p;
}
void destroy()
{
node *p;
for(p=head;p!=NULL;p=p->next)
{
free(p);
p->next=NULL;
}
}
int main(int argc,char**argv)
{
int n;
node *p;
printf("size of list:");
scanf("%d",&n);
create(n);
printf("input the insert number:");
scanf("%d",&n);
insert(n);
printf("the number of the list:");
p=head;
while(p)
{
printf(" (%p): ",p->next);
printf("%d ",p->data);
p=p->next;
}
printf("\n");
destroy();
return 0;
}