今天才开始复习数据结构,而且这本书复习起来很慢啊。但是还是不得不复习。
今天从早上到现在的时候,我终于把顺序单链表的所有操作搞熟悉了,建立,插入,删除,排序,查找,打印,遍历。
现在就附上代码吧,如果觉得有用就拿去吧,代码却对正确,已经在visual studio 2010 调试通过。
001 #include
002 using namespace std;
003
004 struct list{
005 int Maxsize;
006 int *student;
007 int length;
008
009 };
010 void initList(list &stuList,int size)
011 {
012 //这里定义了链表长度
013 stuList.Maxsize = 10;
014 stuList.student=new int[stuList.Maxsize];
015 if(stuList.student==NULL){
016 cout<<“内存不够!”<<endl;
017 exit(1);
018 }else{
019 cout<<“创建成功”<<endl;
020 }
021 stuList.length=size;;
022
023
024 }
025 void createList(list &stuList)
026 {
027 //输入链表
028 cout<<“请输入顺序链表:”<<endl;
029 for(int i=;i<stuList.length;i++){
030 cin>>stuList.student[i];
031 }
032 }
033 void outputList(list &stuList)
034 {
035 //打印链表
036 cout<<“你的链表为:”<<endl;
037 for(int i=;i<stuList.length;i++){
038 cout<<stuList.student[i]<<“ “;
039 }
040 cout<<endl;
041 }
042 void sortList(list &stuList)
043 {
044 //为链表排序,排序说明:第一次前两个数比较,第二次第三个数和前两个数比较,以此类推
045 int i,j;
046 int temp;
047 for(int i=1;i<stuList.length;i++){
048 temp=stuList.student[i];
049 for(j=i-1;j>=;j–){
050 if(stuList.student[j]>temp){
051 stuList.student[j+1]=stuList.student[j];
052 }else break;
053 }
054 stuList.student[j+1]=temp;
055 }
056
057 }
058 bool update(list &stuList,int updateTo,int item)
059 {
060 cout<<“你要更改的数为”<<item<<endl;
061 int i;
062 for(i=;i<stuList.length;i++){
063 if(item==stuList.student[i])
064 break;
065
066 }//获取被更改元素的位置;
067 if(i==stuList.length)
068 return false;//已经将链表全部遍历,仍没找到,则返回false
069 stuList.student[i]=updateTo;
070 return true;
071 }
072 bool insert(list &stuList,int item)
073 {
074 cout<<“你要插入的数为”<<item<<endl;
075 stuList.length++;
076 stuList.student[(stuList.length)-1]=item;//将新增的链表的最后一个元素等于item.
077 return true;
078 }
079 bool deleteNum(list &stuList,int item)
080 {
081 cout<<“你要删除的数为”<<item<<endl;
082 int i;
083 for(i=;i<stuList.length;i++){
084 if(item==stuList.student[i])
085 break;
086
087 }//获取被删除元素的位置;
088 if(i==stuList.length)
089 return false;//已经将链表全部遍历,仍没找到,则返回false
090 for(int y=i+1;y<stuList.length;y++){
091 stuList.student[y-1]=stuList.student[y];
092
093 }//删除元素
094
095 stuList.length–;
096 return true;
097 }
098 int main()
099 {
100 list jList;
101
102 initList( jList,5);//5为链表长度
103 createList(jList);
104 if(insert(jList,10)){
105 cout<<“插入成功”<<endl;
106 }else{
107 cout<<“插入失败”<<endl;
108 }
109 sortList(jList);
110 outputList(jList);
111 if(deleteNum( jList,20)){
112 cout<<“删除成功!”<<endl;
113 }else{
114 cout<<“删除失败”<<endl;
115 }
116 if(update( jList,30,12)){
117 cout<<“更改成功!”<<endl;
118 }else{
119 cout<<“更改失败”<<endl;
120 }
121
122 sortList(jList);
123 outputList(jList);
124
125
126
127 system (“pause”);
128 return ;
129 }