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

xiaoxiao2021-02-28  137

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; }
转载请注明原文地址: https://www.6miu.com/read-17782.html

最新回复(0)