这是我编的;其中包括创建、插入、删除、查找
因我也是刚刚学数据结构,有什么不足的地方,还望指教
                                                                                               
 // SqTest0316.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
//定义节点数据结构
typedef struct Node{
    int date;
                           //数据域
    Node * next;
                       //指针域
}*Plist;
//初始化链表
void InitNode(Plist &ls)
{
    ls = (Node*)malloc(sizeof(Node));
    //申请节点
    ls->next = 0;
    ls->date = 0;
    return;
}
//创建链表
void CreateNode(Plist &ls)
{
    int number ;
    Plist p;
    scanf("%d",&number);
    do{
        //采用前插方法
                                                   //后插法是?
        p=(Plist)malloc(sizeof(Node));
     //申请节点部分
        p->date=number;
        p->next = 0;
        //插入部分
        p->next = ls->next;
        ls->next = p;
        scanf("%d",&number);
    }while(number!=-1);
    
}
/*// 遍历链表
void printfNode(Plist &ls)
{
    Plist
  p=ls->next;
    while(p->next!=0){
        printf("%d ",p->date);
        p=p->next;
    }
}*/
//遍历链表
void PrintfNode(Plist &ls)
{
    Plist
  p=ls->next;
    int i=1;
    while(1)
    {
        printf("第%d个元素为:%d\n",i,p->date);
        if(p->next==0)
            break;
        p = p->next;
        i++;
    
    }
    return;
}
//插入
void InsertNode(Plist &ls,int i,int e)
{
    Plist p=ls,q;
    int j=0;
                   //计时器
    //寻找i的位置
    while(j<i-1){
        p=p->next;
        j++;
    }
   q=(Plist)malloc(sizeof(Node));
   q->date=e;
   q->next=p->next;
   p->next=q;
   printf("插入一个数字后:");
   p=ls->next;
   while(1)
    {
        printf("%d
  ",p->date);
        if(p->next==0)
            break;
        p = p->next;
   }
}
//删除
void DeleteNode(Plist &ls,int number)
{
    Plist p=ls,q;
    for(;p->next!=0;p=p->next){
        if(p->next->date==number){
            q=p->next;
            p->next=q->next;
            break;
        }
    }
    printf("删除该节点后:");
    for(p=ls->next;p->next!=0;p=p->next)
        printf("%d
  ",p->date);
    printf("%d
  ",p->date);
}
//查找
int SearchNode(Plist &ls,int number)
{
    int e=0;
    Plist p=ls;
    for(;p->next!=0;p=p->next,e++){
        if(number==p->date)
            return e;
    }
    if(p->date==number)
        return e+1;
    else
        return 0;
}
int main(int argc, char* argv[])
{
    
    Plist ls;
    InitNode(ls);
    printf("date=%d\n",ls->date);
    printf("next=%d\n",ls->next);
    
    //创建函数
    printf("请输入一串数字(以-1作为结束条件):");
    CreateNode(ls);
    PrintfNode(ls);
    
    //插入函数
    int number ,i;
    printf("请输入你要插入的数:");
    scanf("%d",&number);
    printf("请输入你要插入的位置:");
    scanf("%d",&i);
    InsertNode(ls,i,number);
    printf("\n");
    //删除函数
    int e;
    printf("请输入你要删除的数:");
    scanf("%d",&e);
    DeleteNode(ls,e);
    printf("\n");
    //查找
    int m,n;
    printf("请输入你要查找的数:");
    scanf("%d",&m);
    n=SearchNode(ls,m);
    if(n==0)
        printf("该单链表中没有该数!");
    else
        printf("%d在该链表中的位置是:第%d元素",m,n);
    printf("\n");
    return 0;
}