单链表的综合操作
时间:2014-04-02 03:16 来源: 我爱IT技术网 作者:微风
总结起来,写这个程序既有之前的积累,也有从网上参考别人的一部分写作方式和思想,在写程序时刚开始遇到一个问题,就是怎么做都不对,自己觉得程序应该没有问题的,但是他就运行不出来,于是我新建一个工程,在编译tmd,竟然一个错都没有fuck!把我整饬了,从中总结出,如果你自己自己的代码没问题时,就在新建一个工程,看看有没有问题,其次写代码要慢慢调试,写一部分就要运行一下,否者到最后程序大了,让你调试都没法下手!!本程序是在vs2008下运行的!后面附有运行结果的图!
#includeusing namespace std; typedef struct node { int data; struct node *next; }LNode,*LinkList; //link是struct类型的,特别定义了 // LinkList H; //不需要加指针了,因为LinkList就是指针型变量 LinkList Creat_LinkList(int n) { int x,i; LinkList head ,r,p; head=(LinkList)malloc(sizeof(LNode));// = (LinkList)malloc(sizeof(LNode))=(LNode*)malloc(sizeof(LNode)); r=head; for(i=0;i data=x; r->next =p; r=p; } //这一段位创建空链表,不常用 r->next=NULL; return head; } void output(LNode *head) { LNode *pt; pt=head->next; while(pt!=NULL) //不为空时显示数字 { printf("%d\r\n", pt->data); pt=pt->next; } } LinkList locatelist_index( LinkList H,int i) //x不是下标 { int j=0; LinkList p=H; while(p&&jnext; //很简单 j++; } return p; } LinkList locatelist( LinkList H,int x) //x不是下标 { LinkList p=H->next; while(p&&p->data!=x) p=p->next; return p; } int Insertlist( LinkList h ,int i,int y) //在i节点插入y值 { LinkList p,q; p= locatelist_index( h,i-1); //z在i-1后插入元素 if(!p) { printf("i查找有误!请确认插入的元素是否越界"); return 0; } q=(LinkList)malloc(sizeof(LinkList)); //此时q.p的值是一样的 if(!q) { printf("申请空间失败!"); return 0; } q->data =y; q->next = p->next; //插入元素 p->next=q; return 1; //成功则返回1 } LNode * del(LNode *l, int i) { LNode *p,*s; p=locatelist_index(l,i-1); //把第i-1的指针保存 if(p==NULL) cout<<"输入有误"< next; p->next=s->next; free( s); } return l; } void print(LNode *l) { int i,k,j; int ch; LNode *p,*q; cout<<"当前线性表为:"< next; if(l!=NULL) do { cout< data<<" "; p=p->next; }while(p!=NULL); cout<
图一、
图二、
图三、
本文来源 我爱IT技术网 http://www.52ij.com/jishu/4702.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
