顺序表的相关操作+删除+添加+遍历+逆序
2013-05-22 21:58
681 查看
#include<iostream> using namespace std ; #define MAXSIZE 100 //初始分配的大小 #define ADDSIZE 10 //内存不够每次增加的内存 typedef struct List { char *Elem ; int Length ; int ListSize ; }List ; /*创建链表*/ void CreateList(List &L) { L.Elem = (char *)malloc(MAXSIZE * sizeof(char)) ; if(!L.Elem) { cout<<"overflow"<<endl ; exit(1) ; } L.Length = 0 ; L.ListSize = MAXSIZE ; } /*插入数据到链表*/ void InsertList(List &L, int pos , char e) { if(pos < 0 || pos > L.Length + 1 ) //插入的位置不争正确 { cout<<"pos is wrong "<<endl ; return ; } if(L.Length >= L.ListSize ) //空间不够,增加空间 { char * newbase ; newbase = (char *) realloc(L.Elem , (L.ListSize + ADDSIZE) * sizeof(char)); if(!newbase) { cout<<"overflow"<<endl ; exit(1) ; } L.Elem = newbase ; L.ListSize += ADDSIZE ; } char * p; p= &L.Elem[pos-1] ; //指向要插入位置的指针 char *q ; q= &L.Elem[L.Length - 1] ; //指向最后一个元素的指针 while(q >= p) { *(q+1) = *q ; q-- ; } *p = e ; L.Length ++ ; } /*遍历链表*/ void TraList(List L) { int i = 0 ; while( i < L.Length ) cout<<L.Elem[i++] ; cout<<endl ; } /*删除数据*/ char DeleteList(List &L , int pos) { if(pos < 0 || pos > L.Length + 1 ) { cout<<"pos wrong"<<endl; return -1; } char * p ; p = &L.Elem[pos - 1] ; char e = *p ; int i = pos ; while( i <L.Length){ *p = *(p+1) ; p++ ; i ++; } L.Length -- ; return e ; } /*将链表逆序*/ void Reserve(List &L) { int i = 0 , j = L.Length -1 ; while( i<= L.Length/2 - 1) { char tmp ; tmp = L.Elem [i] ; L.Elem [i] = L.Elem[j] ; L.Elem[j] = tmp ; i ++ ; j -- ; } } int main(void) { List L; CreateList(L) ; char e ; int i ; cout<<"输入你要插入的数据:(当输入数据'q'时结束)"<<endl; //while(cin >> e && e!='q'){ // cin >> i ; for( int j = 1 ; j <=10 ; j ++){ e = j+'A'-1 ; i = 1; InsertList(L , i , e) ; } // } TraList(L); cout << "将链表逆序"<<endl ; Reserve(L); TraList(L); cout<<"输入你要删除的数据的位置:(输入0结束)"<<endl; while(cin >> i && i){ e = DeleteList(L,i) ; cout<<"删除的数据是:"<< e <<endl ; TraList(L ) ; } return 0 ; }
相关文章推荐
- 静态顺序表的实现及相关操作源代码(插入,删除,排序,逆置,超详细)
- jquery 动态添加、按顺序添加input文本框并且实现删除操作
- 链式链表的相关操作+删除+添加+逆序+遍历
- 4、kvm相关网卡操作(添加、删除)
- oracle 修改表名、列名、字段类型、添加表列、删除表列 等相关操作
- oracle 修改表名、列名、字段类型、添加表列、删除表列 等相关操作
- 数据库的相关操作:如连接、查询、添加、删除、修改、分页显示
- jquery 动态添加、按顺序添加input文本框并且实现删除操作
- yii 数据库添加,修改,删除相关操作总结
- 头结点链表的添加结点,删除结点,链表逆序,删除指定数据等操作的实现
- zTree插件和layer弹出层结合进行添加,删除,修改操作时,针对出现调用父父页面方法出现问题,解决方法
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- mysql 添加字段 删除字段 改变字段的顺序
- C语言实现链表的创建、增加、删除、查询、逆序、清空等基本操作
- 利用ErlyDB、Mysql来实现表的添加、删除、修改、查询操作
- redis集群操作-添加节点和删除节点
- ios中文件的相关操作:读,写,删除
- VB.NET数据库另一种添加删除操作
- mysql 添加字段、删除字段、调整字段顺序
- 给jqGrid数据行添加修改和删除操作链接(可以执行)