第二天学习数据结构

#include<stdio.h>
#include<malloc.h>

//#include<string.h>

//完成一部分,只有初始化和输出,其余明天继续

typedef struct List
{
int data;
struct List * pnext;
}sqList;
//动态链表的生成  用单循环链表
void InitList(sqList * list); //初始化链表
void ShowList(sqList list);
void InsertList(sqList * list );//插入一个数值链表
void DeleteList(sqList * list , int position); //删除第position元素
bool IsEmpty(sqList list); //判断是否为空
void Findpositon(sqList * list , int b );//查找b在链表中的位置
void showmenu();




int main()
{
int i ;
  sqList *p;//头指针    下面这4行,初始化头指针和头结点
sqList head; //头结点
head.data = 0;
 p = &head;
 head.pnext = &head;  
 showmenu();
for(int j = 0; j<= 10 ;j++)
{
 
 scanf("%d",&i);
switch(i)
{
case 1:
InitList(&head);
break;
case 2:
ShowList(head);
break;
case 3:
InsertList(&head  );
break;


}

}

return 0;
}
void showmenu()
{
printf("1创建动态链表\n");
printf("2插入数值进链表\n");
printf("3删除第n个位置元素\n");
printf("4输出链表\n");
printf("5判断链表是否为空\n");
printf("6查找元素在链表的位置\n");
}
void  InitList(sqList * head)
{
int i = 1;
int b = 1;
sqList * tailp;  //创建的尾指针
tailp  = head;
printf("输入0 则退出 输入\n");
while(b != 0)
{

printf("请输入第%d元素\n" , i);
scanf("%d",&b);
sqList * pp;
if(b!=0)
{pp =    ( sqList *) malloc(sizeof(sqList));
tailp->pnext = pp;
pp->data = b;
tailp = pp;
tailp->pnext = head;
i++;
(head->data)++;

}
else
{
}
//头结点的data用来存取个数


}
printf("您输入的链表长度是%d",head->data);


}


void ShowList(sqList list)           //链表必须有个头节点,还应该创建一个指针,使其一次一次后移,输出数据
{
sqList  * pp ;
pp = &list;
 /* while( ((pp->pnext)->data) !=  list.data  )  //比较头结点的存的数值 ,尾节点的next指向head,
{
printf("%d\t",((*pp).pnext)->data);
pp = pp->pnext;   
*/     //错误的方法,因为数据总量,可以和存的值,相同,所以头结点->data 提前等于数据长度,所以不适合
int k = 0;
for(k=1 ; k <= list.data; k++)               
{
printf("%d \t" ,(*pp->pnext).data );
pp = pp->pnext;
}

}

void InsertList(sqList * list  )//插入一个数值链表
{
int b1,position1;
printf("请输入要插入的元素");
scanf("%d",&b1);
printf("请输入要插入的位置");
scanf("%d",&position1);
/* sqList  pt;       //创建一个结构体,用于保存输入的值
pt.data = b1;
sqList * ppt = &pt;   //创建一个指针,指向新创建的结构体
sqList * pp;
pp = list;
int j ;
if(position1 ==1)
{
ppt->pnext = pp->pnext ;
pp->pnext = &pt;    注释这个方法错误,没用动态的创造空间
}
else
{
for( j =1 ; j <position1; j++ )
{
pp = pp->pnext;
}
ppt->pnext = pp->pnext;
pp->pnext = &pt;
}*/


sqList * pt = (sqList *) malloc (sizeof(sqList));
pt->data = b1;
sqList * pp = list;
if(position1 ==1)
{
 pt->pnext = pp->pnext ;
 pp->pnext = pt;
}
else
{
int j ;
for( j =1 ; j <position1; j++ )
{
pp = pp->pnext;
}
pt->pnext = pp->pnext;
pp->pnext = pt;
}
(list->data)++;


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值