串插入

来源:互联网 发布:软件测试培训 编辑:程序博客网 时间:2024/06/15 03:12
//链串中串插入运算#include <stdio.h>#include <stdlib.h>typedef struct snode{char data;struct snode *next;}LiString;                    //链串节点类型void StrAssingn(LiString **s, char str[])      //尾插法建立链串{LiString *p, *r;int i;*s = (LiString *)malloc(sizeof(LiString)); //建立链串头节点r = *s;                                    //r 始终指向链串s 的尾节点for (i = 0; str[i] != '\0'; i++){p = (LiString *)malloc(sizeof(LiString));p->data = str[i];r->next = p;           //最后一个节点后加上pr = p;                 //让p 指向最后一个节点}r->next = NULL;}void StrInsert(LiString *s, int i, LiString *t){                             //将链串t 插入到链串s 的第i 个节点位置LiString *p, *r;int k;p = s->next;for (k = 0; k < i - 1; k++){p = p->next;}r = p->next;              //第i 个阶段开始的串p->next = t->next;p = t;                    //p 指向链串t 的头节点while (p->next != NULL){p = p->next;}p->next = r;         }int main(){LiString *head1, *head2, *p;char c1[20] = "ABCD", c2[10] = "abcd";StrAssingn(&head1, c1);      //建立链串head1StrAssingn(&head2, c2);      //建立链串head2StrInsert(head1, 2, head2);  //将链串head2插入到链串head1 中p = head1->next;while (p != NULL){printf("%2c", p->data);p = p->next;}printf("\n");return 0;}

原创粉丝点击