cチェーンテーブルノードの削除と追加
20772 ワード
1 #include<stdio.h>
2 #include<stdlib.h>
3 typedef char datetype;/* */
4 typedef struct node
5 {
6 datetype date;
7 struct node *next;
8 }listnode;
9 typedef listnode *linklist;
10 int delete(linklist h,int num)/* */
11 {
12 linklist p=h;
13 listnode *q=NULL;
14 int i=num;
15 int n=1;
16 while(n<i)/* */
17 {
18 q=p;/* */
19 p=p->next;
20 n++;
21 }
22 if(p==NULL)/* */
23 printf("No Found Node!");
24 else
25 {
26 q->next=p->next;
27 free(p);
28 }
29 }
30
31 void output(linklist head)/* */
32 {
33 linklist p=head;
34 while(p!=NULL)
35 {
36 printf("%c",p->date);
37 p=p->next;
38 }
39 }
40 int rear_creat(linklist head,int index0,int m)/* , , , date*/
41 {
42 linklist k,g;
43 int i=index0,n;
44 k=head;
45 n=1;
46 while(n<i)/* */
47 {
48 n++;
49 k=k->next;
50 }
51 g=(listnode *)malloc(sizeof(listnode));
52 g->next=k->next;
53 g->date=m;
54 k->next=g;
55 }
56 int main()
57 {
58 char ch;
59 int index,index0;
60 char m;
61 linklist head=NULL;
62 listnode *p,*r;
63 ch=getchar();
64 while(ch!='
')
65 {
66 p=(listnode *)malloc(sizeof(listnode));
67 p->date=ch;
68 if(head==NULL)
69 head=p;
70 else
71 r->next=p;
72 r=p;
73 ch=getchar();
74 }
75 output(head);
76 printf("
delete a node:
");
77 scanf("%d",&index);
78 if(index==1)
79 head=head->next;
80 else
81 delete(head,index);
82 output(head);
83
84 printf("
creat a node:
");
85 scanf("%d%c",&index0,&m);
86 rear_creat(head,index0,m);
87 output(head);
88 return 0;
89 }
1 #include<stdio.h>/* */
2 #include<stdlib.h>
3 typedef char datetype;
4 typedef struct node
5 {
6 datetype date;
7 struct node *next;
8 }listnode;
9
10 typedef listnode *linklist;
11 linklist r=NULL,head=NULL;
12
13 void rear_creat(datetype ch)
14 {
15 linklist p=NULL;
16 p=(listnode *)malloc(sizeof(listnode));
17 p->date=ch;
18 if(head==NULL)
19 {
20 head=p;
21 }
22 else
23 {
24 r->next=p;
25 }
26 r=p;
27 }
28 void output(linklist head)
29 {
30 while(head!=NULL)
31 {
32 printf("%c ",head->date);
33 head=head->next;
34 }
35
36 }
37 void insert_rear(int index,int num)
38 {
39 listnode *p=NULL,*u;
40 u=head;
41 int n=1;
42 p=(listnode *)malloc(sizeof(listnode));
43 p->date=index;
44 while(num>n)
45 {
46 u=u->next;
47 n++;
48 }
49 p->next=u->next;
50 u->next=p;
51 }
52 void delete(int num)
53 {
54 int n=1;
55 linklist p=head,q;
56 while(num>n)
57 {
58 n++;
59 q=p;
60 p=p->next;
61 }
62 q->next=p->next;
63 }
64
65 int main()
66 {
67 datetype index,ch;
68 int num;
69 ch=getchar();
70 while(ch!='
')
71 {
72 rear_creat(ch);
73 ch=getchar();
74 }
75 output(head);
76 scanf("%c%d",&index,&num);
77 insert_rear(index,num);
78 output(head);
79 scanf("%d",&num);
80 delete(num);
81 output(head);
82 }