#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define len_linklist 2
#define maxsize 11
typedef struct node
{
char tel_number[maxsize];
char name[maxsize];
struct node *next;
}lnode,*linklist;
int Init_linklist(linklist l)//初始化单链表;
{
l = (linklist)malloc(sizeof(lnode));
if(!l)
{
return 0;
}
l->next = NULL;
return 1;
}
int Empty_linklist(linklist l)//检查是否创建成功
{
if(l)
{
return 1;
}
return 0;
}
int Clear_linklist(linklist l)//销毁链表
{
linklist p;
linklist q;
p = l->next;
while(p != NULL)
{
q = p->next;
free(p);
p = q;
}
l->next = NULL;
return 1;
}
void Assignment_linklist(linklist *l)//给单链表赋值
{
int i;
char n[maxsize];
char m[maxsize];
int year;
linklist p;
linklist r;
*l = (linklist)malloc(sizeof(lnode));
r = *l;
for(i = 0; i < len_linklist; i++)
{
p = (linklist)malloc(sizeof(lnode));
strcpy(p->name,gets(m));
strcpy(p->tel_number,gets(n));
r->next = p;
r = p;
}
r->next = NULL;
}
int Travle_linklist(linklist l)//遍历输出链表数据
{
linklist p = l->next;
while(p)
{
printf("姓名:%s 号码:%s\n",p->name,p->tel_number);
p = p->next;
}
printf("\n");
return 1;
}
int Insert_linklist(linklist l,int location,int num)//指定位置插入数据
{
int i=1;
linklist p;
linklist s;
p = l;
while(p && i < location)
{
p = p->next;
i++;
}
if(!p || i > location)
{
return 0;
}
s = (linklist)malloc(sizeof(lnode));
// s->data = num;
s->next = p->next;
p->next = s;
return 1;
}
int Delete_linklist(linklist l,int location)//指定位置删除
{
int i = 1;
linklist p;
linklist s;
p = l;
while(p->next && i < location)
{
p = p->next;
i++;
}
if(!(p->next) || i > location)
{
return 0;
}
s =p->next;
p->next = s->next;
free(s);
return 1;
}
int main()
{
linklist l;
Init_linklist(l);
Assignment_linklist(&l);
//Insert_linklist(l,3,100);
Travle_linklist(l);
// Delete_linklist(l,4);
//Travle_linklist(l);
return 0;
}
运行结果: