问题描述
- 代码本是用来解决在一个链表中插入一个元素,但是运行后结果总是与本意不同。亲们帮帮忙,看看怎么错了。
-
#include
using namespace std;
struct List //定义一个结构体表示线性表
{
int num;
struct List *next;
};
int main()
{
List la,*p,*head,*p1,*pm; //定义线性表la//把表a的首元素地址赋给p和head int n=1,m,t; cout<<"请输入表a中的第"<<1<<"个元素"<<endl; cin>>la.num; p=&la;head=&la;p1=&la; cout<<"是否继续输入,继续就输入1,不继续就输入0"<<endl; cin>>t; if(t!=1&&t!=0) { cout<<"输入错误,请重新输入"<<endl; cout<<"是否继续输入,继续就输入1,不继续就输入0"<<endl; cin>>t; } if(t) do { p->next =new List; p=p->next ; cout<<"请输入表a中的第"<<n+1<<"个元素"<<endl; cin>>p->num; cout<<"是否继续输入,继续就输入1,不继续就输入0"<<endl; cin>>t; if(t!=1&&t!=0) { cout<<"输入错误,请重新输入"<<endl; cout<<"是否继续输入,继续就输入1,不继续就输入0"<<endl; cin>>t; } n++; }while(t); p->next =new List; p=head; cout<<"总共有"<<n<<"个元素"<<endl; cout<<"表中元素为"<<endl; for(int i=1;i<=n;i++) { cout<<p->num <<" "; p=p->next; } p=head; cout<<"表a中的元素已经输入完成,请输入要插入新元素的位置数m"<<endl; cin>>m; pm=new List; cout<<"输入要插入的新元素"<<endl; cin>>pm->num; pm->next =p+m; (p+m-1)->next =pm ; cout<<p->num <<' '<<(p+m-1)->num <<' '<<pm->num<<endl; for(int j=1;j<=n;j++) { cout<<p1->num<<' '; p1=p1->next; } return 0;
}
解决方案
1 #include <iostream>
2 using namespace std;
3 struct List //露篓?一赂枚鹿?卤铆??卤铆
4 {
5 int num;
6 struct List *next;
7 };
8 int main()
9 {
10 List la,*p,*head,*p1,*pm; //露篓???卤铆
11 //掳驯铆??陋?碌?路赂鲁赂酶ead
12 int n=1,m,t;
13 cout<<"input "<<1<<"item"<<endl;
14 cin>>la.num;
15 p=&la;head=&la;p1=&la;
16
17 cout<<"1 go on, 0 terminal"<<endl;
18 cin>>t;
19 if(t!=1&&t!=0)
20 {
21 cout<<"err, try again:"<<endl;
22 cout<<"1 go on, 0 terminal"<<endl;
23 cin>>t;
24 }
25
26 if(t)
27 {
28 do
29 {
30 p->next =new List;
31 p=p->next ;
32 cout<<"input"<<n+1<<"item"<<endl;
33 cin>>p->num;
34 cout<<"1 go on, 0 terminal"<<endl;
35 cin>>t;
36 if(t!=1&&t!=0)
37 {
38 cout<<"err, try again:"<<endl;
39 cout<<"1 go on, 0 terminal"<<endl;
40 cin>>t;
41 }
42 n++;
43 }while(t);
44
45 // p->next =new List;
46
47 p=head;
48 cout<<"total"<<n<<"item"<<endl;
49 cout<<"contents:"<<endl;
50 for(int i=1;i<=n;i++)
51 {
52 cout<<p->num <<" ";
53 p=p->next;
54 }
55 p=head;
56 cout<<"insert m"<<endl;
57 cin>>m;
58 pm=new List;
59 cout<<"insert num"<<endl;
60 cin>>pm->num;
61 // pm->next =p+m;
62 // (p+m-1)->next =pm ;
63 struct List *pre = p;
64 struct List *cur = p;
65 for( int i = 0; i <= m; i++ )
66 {
67 if( i == m )
68 {
69 pm->next = cur;
70 pre->next = pm;
71 }
72 pre = cur;
73 cur = cur->next;
74 }
75
76 n++; // ?要录?
77 cout<<p->num <<' '<<(p+m-1)->num <<' '<<pm->num<<endl;
78
79 for(int j=1;j<=n;j++)
80 {
81 cout<<p1->num<<' ';
82 p1=p1->next;
83 }
84 }
85 return 0;
86 }
时间: 2024-08-03 12:43:23