#2
soulmate10232014-11-07 11:48
给你改了,你这个有个很无语的问题,你的创建链表函数中的&没有加!!!
程序代码: #include<stdio.h> #include<stdlib.h> #define NULL 0 #define ElemType int typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; LinkList L; int InitList_L(LinkList &L) //具有头结点 { L=(LinkList)malloc(sizeof(LNode)); if(!L) return 0; L->data=-1; L->next=NULL; return 1; } /*void CreateList_L(LinkList &L,int n) { LinkList p; int i; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=0;i<n;i--) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",p->data); } p->next=L->next; L->next=p; }*/ int CreateList_L(LinkList &L,int n) { LinkList p,q; int i; // L=(LinkList)malloc(sizeof(LNode)); q=L; for(i=0;i<n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); q->next=p; q=p; p->next=NULL; } return 1; } int LinkInsert_L(LinkList &L,int i,ElemType e) { LinkList s,p; int j; p=L;j=0; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return 0; s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return 1; } int ListDelete_L(LinkList &L,int i,ElemType &e) { LinkList q,p; p=L; int j=0; while(p->next && j<i-1) { p=p->next; ++j; } if(!(p->next)||j>i-1) return 0; q=p->next; p->next=q->next; e=q->data; free(q); return 1; } void PrintList_L(LinkList &L) { LinkList p; p=L->next; while(p) { printf("%d\n",p->data); p=p->next; } } int main() { int number,k; //int i; // LinkList L; printf("请依次输入5个整数:\n"); InitList_L(L); CreateList_L(L,5); printf("the \n"); PrintList_L(L); printf("请按提示,选择操作选项:\n"); printf("1 插入元素\n"); printf("2 删除元素\n"); printf("3 退出\n"); scanf("%d",&number); switch(number) { case 1 :printf("选项1\n"); LinkInsert_L(L,3,9); PrintList_L(L); break; case 2 :printf("选项2\n"); ListDelete_L(L,4,k); //删除第4个元素,从1编号 PrintList_L(L); break; case 3 :printf("选项3\n"); break; default:printf("enter data error!\n"); } system("pause"); return 0; } |
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define ElemType int
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
LinkList L;
int InitList_L()
{
L=(LinkList)malloc(sizeof(LNode));
if(!L)
return 0;
L->next=NULL;
return 1;
}
/*void CreateList_L(LinkList &L,int n)
{
LinkList p;
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=0;i<n;i--)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",p->data);
}
p->next=L->next;
L->next=p;
}*/
int CreateList_L(LinkList &L,int n)
{
LinkList p,q;
int i;
L=(LinkList)malloc(sizeof(LNode));
q=L;
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",p->data);
q->next=p;
q=p;
p->next=NULL;
}
return 1;
}
int LinkInsert_L(LinkList &L,int i,ElemType e)
{
LinkList s,p;
int j;
p=L;j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return 0;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete_L(LinkList &L,int i,ElemType &e)
{
LinkList q,p;
p=L;
int j=0;
while(p->next && j<i-1)
{
p=p->next;
++j;
}
if(!(p->next)||j>i-1)
return 0;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 1;
}
void PrintList_L(LinkList &L)
{
LinkList p;
p=L->next;
while(p)
{
printf("%d",p->data);
p=p->next;
printf("\n");
}
}
void main()
{
int number,k;
//int i;
LinkList L;
printf("请依次输入5个整数:\n");
CreateList_L(L,5);
printf("请按提示,选择操作选项:\n");
printf("1 插入元素\n");
printf("2 删除元素\n");
printf("3 退出\n");
scanf("%d",&number);
switch(number)
{
case 1 :printf("选项1\n");
LinkInsert_L(L,3,9);
PrintList_L(L);
break;
case 2 :printf("选项2\n");
ListDelete_L(L,4,k);
PrintList_L(L);
break;
case 3 :printf("选项3\n");
break;
default:printf("enter data error!\n");
}
}