|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近刚学数据结构,感觉书上的好多算法自己在实际敲的过程中,每次都有好多错误,不知道是编译器的问题还是我的代码问题~~但是把网上大佬的程序拷贝下来运行也是好多错误。
比如说我下面创建链表,照书上打报很多错,自己结合网上的代码修改,虽然不报错了,但是在输出是也不成功,遍历不出来,而且GetElem也错误。求大佬们看看呀~~~- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>
- typedef int ElemType;
- #define null 0
- typedef struct LNode{
- ElemType data;
- struct LNode *next;
- }LNode,*LinkList;
- void CreateList(LinkList L,int n){
- int i;
- LinkList p;
- L=(LinkList)malloc(sizeof (LNode));
- L->next=NULL;
- printf("请输入顺序表中的元素:");
- for(i=n;i>0;--i){
- p=(LinkList)malloc(sizeof (LNode));
- scanf("%d",
- &p->data);
- p->next=L->next;L->next=p;
- }
- }
- void Listtraverse(LinkList L)
- {
- //遍历链式表l
- LinkList p=L->next;
- while(p!=0)
- {
- printf("%d\n",p->data);
- p=p->next;
- }
- }
- int GetElem(LinkList L,int i)
- {
- //取带头节点的单链表l中第i个元素,用e返回
- int j;
- int e;
- LinkList p;
- p=L->next;
- j=1;
- while(p&&j<i)
- {
- p=p->next;
- ++j;
- }
- if(!p||j>i)return 0;
- e=p->data;
- printf("第%d个元素是%d\n",i,e);
- return 0;
- }
- main(){
- LinkList L;
- int n;
- printf("输入节点数:");
- scanf("%d",&n);
- CreateList(L,n);
-
- while(L){
- printf("%d\n",L->data);
- L=L->next;
- }
- return 0;
- }
复制代码
本帖最后由 jackz007 于 2019-4-12 14:21 编辑
- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>
- typedef struct LNode {
- int data ;
- struct LNode * next ;
- } LNode , * LinkList ;
- LinkList CreateList(void)
- {
- int i , n , data ;
- LinkList head , p1 , p2 ;
- head = NULL ;
- printf("输入节点数:") ;
- scanf("%d" , & n) ;
- if(n > 0) {
- for(i = 0 ; i < n ; i ++) {
- printf("节点 %d : " , i + 1) ;
- scanf("%d" , & data) ;
- if((p2 = (LinkList) malloc(sizeof(LNode))) != NULL) {
- p2 -> data = data ;
- p2 -> next = NULL ;
- if(! i) head = p2 ;
- else p1 -> next = p2 ;
- p1 = p2 ;
- } else {
- fprintf(stderr , "error : malloc() failure!\n") ;
- break ;
- }
- }
- }
- return head ;
- }
- void Listtraverse(LinkList L)
- {
- LinkList p ;
- p = L ;
- while(p != NULL) {
- printf("%d\n" , p -> data) ;
- p = p -> next ;
- }
- }
- int GetElem(LinkList L , int n)
- {
- int i , e ;
- LinkList p ;
- e = -1 ;
- for(i = 0 , p = L ; i < n && p != NULL ; i ++) p = p -> next ;
- if(i == n && p != NULL) {
- printf("第%d个元素是%d\n" , n , p -> data) ;
- e = 0 ;
- }
- return e ;
- }
- main(void)
- {
- LinkList L ;
- L = CreateList() ;
- while(L){
- printf("%d\n" , L -> data) ;
- L = L->next ;
- }
- }
复制代码
|
|