【数据结构】单链表插入算法

来源:互联网 发布:knn算法 matlab 编辑:程序博客网 时间:2024/05/23 13:57
int Insert(struct ListNode* head,int i,char x){//在第i个位置之前插入新元素 ,成功插入返回1 struct ListNode *p=head,*s;int j=1;while(p!=NULL&&j<i-1)//寻找第i-1个结点 用p指向它 {    p =p->next  ;    j++;}if(j!=i-1){    printf("插入位置不合适\n");    return 0;}//生成一个空结点if((s=(struct ListNode *)malloc(sizeof(struct ListNode)))==NULL)    return 0;s->data =x;//给数据域赋值 s->next =p->next ;//结点s插入在i-1后面,插入后s指向第i 个结点 p->next =s;//第i-1个结点原来指向第i个结点,现在指向s结点 return 1;}int main() {    struct ListNode *q,*p;    q=CreateList();    Insert(q,3,'x');     while(q)//从头指针开始遍历链表     {        printf("%c",q->data );//输出链表结点数据        p=q->next;//P为q的后继结点        free(q);        q=p;      }      printf("\n");     return 0;} 
原创粉丝点击