SWUST OJ(952)

单链表的插入操作实现

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef struct LinkList
 5 {
 6     int data;
 7     struct LinkList *next;
 8 }LinkList;
 9 
10 void CreateLinkList(LinkList *&L,int n, int *array)
11 {
12     L =(LinkList*)malloc(sizeof(LinkList)); //先创建一个带头结点的单链表
13     L->next = NULL;
14     LinkList * r = L; //r指针始终指向链表的最后一个节点
15     for (int i = 0; i < n; ++i)
16     {
17         LinkList * p =(LinkList*)malloc(sizeof(LinkList));
18         p->data = *array++;
19         //将新增的节点用尾插法插入到链表中
20         p->next = r->next;
21         r->next = p;
22         r = p;
23     }
24 
25 }
26 
27 void InsertLinkList(LinkList *&L, int n, int item, int data)
28 {
29     if(item > n || item < 0)
30     {
31         printf("error!");
32         exit(-1);
33     }
34     else
35     {
36         LinkList *p = L;
37         for (int i = 0; i < item-1; ++i)
38         {
39             p = p->next;
40         }
41 
42         LinkList * node =(LinkList*)malloc(sizeof(LinkList));
43         node->data = data;
44         node->next = p->next;
45         p->next = node;
46     }
47 }
48 
49 void DisLinkList(LinkList *L)
50 {
51     LinkList *p = L->next;
52     while(p!=NULL)
53     {
54         printf("%d ",p->data);
55         p = p->next;
56     }
57 }
58 
59 int main(int argc, char const *argv[])
60 {
61     /*int n = 5;
62     int arry[]={1,2,3,4,5};
63     int item = 3;
64     int data = 6;*/
65 
66     int n,item,data;
67     int *arry;
68     
69     scanf("%d",&n);
70     arry = (int*)malloc(n*sizeof(int));
71     for (int i = 0; i < n; ++i)
72     {
73         scanf("%d",&arry[i]);
74     }
75     scanf("%d",&item);
76     scanf("%d",&data);
77     
78     LinkList * L;
79     CreateLinkList(L,n,arry);
80     InsertLinkList(L,n,item,data);
81     DisLinkList(L);
82     return 0;
83 }

猜你喜欢

转载自www.cnblogs.com/Ghost4C-QH/p/10453302.html