在学了链表之后,自己也能写出一个简单的链表结构,这里就将自己的代码分享一下。如果发现有不足之处,欢迎指出。
1.创建结构体
typedef struct dnode
{
int data;
struct dnode *next;
}snode,*ptr;
2.实现向后插入法构造链表函数
这里返回的是head,
ptr initlink()//初始化链表并插入元素(向后插入)
{
ptr head,last,p;
int x,i,n;
head=last=(ptr)malloc(sizeof(snode));
last->next=NULL;
printf("请输入要输入几个数:");
scanf("%d",&n);//读入第一个元素
for(i=0;i<n;i++)//当读的不是结束标记继续循环
{
printf("请输入第%d个想加入的数字:",i+1);
scanf("%d",&x);//读入元素
p=(ptr)malloc(sizeof(snode));//申请一个存储节点
p->data=x;//置结点的值域
last->next=p;
p->next=NULL;
last=p;
}
p=head;head=head->next;free(p);//删除辅助结点
return(head);//返回表头指针
}
3.实现按顺序显示链表函数
void showlink(ptr p){
//显示链表所有元素
printf("您现在的链表为:");
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
4.实现按值查找函数
判断放在了主函数,如果返回值是0,说明该值不存在,如果返回不是0,则该返回值就是该值所在链表的位置(并不是下标位置,而是下标位置