来源:蜘蛛抓取(WebSpider)
时间:2014-11-18 11:24
标签:
c语言入门
求精通数据结构的大神讲解一下C语言的这段代码_百度知道
求精通数据结构的大神讲解一下C语言的这段代码
#include <, p-& i++)
p = (PtrNode)malloc(sizeof(Node));
p = p->,
if(j<, newName);
for(j=0, int j){
PtrNode p=ls!=NULL)
p-&n&name)>, p-&
while(p;next, q, q-& i&
i++!=NULL)
p=p-&n-1&&bFlag==1;", &null\, tmpName), char key_name[32]){
strcpy(q-&
return p这是数据结构里建立线性表的一段代码 代码有些长 起码逐行说一下前一部分 因为本人C的基础不是很好 所以阅读起来有些吃力 还请帮帮忙 不胜感激;;next = NULL;
while(p;name);
}}void DestroyList(PtrNode *ls){
PtrNode p = *
char tmpName[32];
}name);next = p!=NULL&&i&
while(p;next.h&next = s.h&next = NULL;}void TraverseList(PtrNode ls){
PtrNode p=ls-&
char tmpName[32], tmpName);
if(strcmp(p-&%s-& i++)
bFlag = 0;
bFlag = 1;
if(q==NULL)
return NULL;#include &)!#include &
int bFlag=1;
p =%s", int n){
rear = ls, n = GetLength(ls);next = p-&
while(q;}PtrNode LocateElem(PtrN0) return NULL;
struct _Node *typedef struct _Node{
char name[32], tmpName);n;j)
p=p-&}int GetLength(PtrNode ls){
PtrNode p=ls-&typedef struct _Node * PtrN
strcpy(p-& j&name);
free(q), q-&
PtrNvoid InitList(PtrNode *ls){
*ls = (PtrNode)malloc(sizeof(Node));
while(p;}void DeleteNode(PtrNode p){
PtrNode s=p->, key_name)==0)
free(s); i<!=NULL)
printf(&}void InsertNode(PtrN
strcpy((*ls)->,0)
strcpy(tmpN
strcpy(p-&name,
rear->, char newName[32]){
PtrNode s = (PtrNode)malloc(sizeof(Node));Nothing&);}void CreateList(PtrN
p = p->!=NULL)
(*ls)-& j++)
*ls = NULL;next = s->.h&
p = p-&}PtrNode GetElem(PtrN
strcpy(s-&
int i=0;}void BubbleSort(PtrNode ls){
int i, rear!=NULL)
if(strcmp(q-&stdlib
pNode=LocateElem(myLkList!=NULL)
DeleteNode(pNode); }
TraverseList(myLkList);
if(pNode, newName), newName[32], 4);;
InitList(&myLkList), keyName);
pNode = GetElem(myLkList!=NULL)
InsertNode(pN;%s&
CreateList(myLkList。int main(){
TraverseList(myLkList);
if(pNode, keyName);%s&
PtrNode myLkList伤良避剐篆溉吊炮, n);
char keyName[32], pNode由于提问字数限制 没有写主函数代码 在这里补充 还请见谅
提问者采纳
//a;&&&rear !=NULL)//将此结点之后的统统删除&myLkL&/zhidao/wh%3D450%2C600/sign=0c81b5b395dda144da5c64b6af40ad162d9f2dfabec8a;&ls)//返回ls的结点个数{ 我帮你注释了一下;&&&&&&&&&&&&&=&newName[32])//将name值为newName的新结点插入到p的当前位置;if(pN&n)//尾插法建立链表;&&&keyName[32];{&&&return&&=&&&&&&&_Node{&=&char&while(p;);&&}&&&&&struct .jpg" />以下为你的代码;N&&&=&&&while(p;&&&&&p-&&&0;&pN//遍历打印&printf(&&&while(p, , ,依次销毁ls的每一个结点&&next&//遍历打印&p=p-&}PtrNode&scanf(&&&&&&&&&&&q&int&*ls)//初始化链表{&&*PtrNGetLength(ls);p&newName);&&return&& ,p自动后移{&&&&&&&&&pNode=LocateElem(myLkL&p;&name[32],&printf(&&=&=&*ls)//销毁链表ls{&&&(PtrNode)malloc(sizeof(No略沸篡剐诂溉隔炮de));&PtrNode&p-&&j)//j大于链表长度的情况下p指向的是最后一个元素 ,&&&&q&}}void&&&PtrNode&&&{&&&&q-&&&TraverseList(myLkList);//声明字符数组&&&{&&&&&&bFlag=1;&i=0;&&struct&&&&&;&return&i++;&&&&&&&&return&&}&n=4;&q&p-&&&/zhidao/pic/item/7af40ad162d9f2dfabec8a;}&&&&&=&&& ,&char&LocateElem(PtrNode&&keyName);i&&&{&&&keyName):\n&&&&&p&{& ,&else&ls-&&if(j&int&&&&%s-&&&}&&&&&&key_name)==0)&&&&&}void&&} ,参数1大于参数2时执行if内的语句&&p&& , ,&&&}void&&name);&&CreateList(PtrNode&&&&p-&(PtrNode)malloc(sizeof(Node));j& !=NULL)//用p遍历&p-&&p-&s;&&i++)&&i;&&&NULL;&& !=NULL)&typedef&&&p=&&strcpy(tmpNscanf(&&&&&&&&&&TraverseList(myLkList);&&&}&&for(j=0;p->, ,&0;if(strcmp(p-&;j++)&&&&//对调p和q的name值&&&=&&&p)//删除结点p{&&&&newName); .h&&&bFlag&&&&&&& .&&0)&&next&=&q-&&&&=&i&&Nothing&=&bFlag&& .h& ,&for(i=0;PtrNode&=&&rear&int&&&&int&&&TraverseList(myLkList);=&&&PtrNode&}&& ,&InitList(PtrNode&&&请输入要查找的关键字\n&//初始化 ,&&&&p=ls-&i++)&&{&//默认name值为Noting&&&next&PtrNode&next&&);=&&&&%s&&{&;//输入要查找的keyName , ,&}&TraverseList(PtrNode&&int&&&DeleteNode(PtrNode&return&&&&& ,&&//此时p-&=&& !=NULL)& .&&&&q;&&&&&&newName);&&&&s-&strcpy(q-&&&& !=NULL&!=NULL)&strcpy(s-&&&&rear-&&GetElem(myLkL&1;ls->,& ,&=&&&//暂存p的next值&&删除第四个以后的结点;&&&DestroyList(PtrNode&&*ls&_Node&&&&&&if(strcmp(q-&&&& ,最终为升序{&&PtrNode&char&/zhidao/wh%3D600%2C800/sign=b247b783b27ecaa113bbe5/7af40ad162d9f2dfabec8a;&"!=NULL)&&n-1&&//插入4个结点&}&& :strcmp&&&newName[32];&//找到与key_name相等的元素后直接跳出循环&&&(*ls)-&q&//百度百科;&#include&while(p;&&strcpy(p-&&PtrNode&&i++;DeleteNode(pNode);&InsertNode(pN&&&//-------------------------------------------int&p;&&&&=&&printf(&&p&&struct&&char&=&&&p-&&&&& .jpg" esrc="&&&&&&j;&&p-&p;&&//rear回到链表最后位置&while(q;&&&&&n&);InsertNode(PtrNode&&& ,&&&&if(q==NULL)&); ://a;}void&&&&&&&&&printf(",& ,&_Node&*name)&&&&& ,没有则返回空{&&p;&&&&&&&int&&&}}&&&&//链表尾节点指向空}void&(PtrNode)malloc(sizeof(Node));InitList(&&&&&&&&;&&&&&&&if(pN& ,&&&&&BubbleSort(PtrNode&q;tmpName[32];%s&&&&&bFlag==1;ls)&&i;{&tmpName);PtrNode&&&&//查到到第4个结点&&&&&&&&&myLkList); !=NULL)//若存在这个keyName就在这个结点的下一个位置插入一个新结点&&&//遍历打印&&&main(){&rear-&&& 、next赋值&4);&&&//默认为空指针}void&&&tmpName);free(q);&{&&&&& .&=&&&请输入要添加的新结点\n&&&GetLength(PtrNode&&&& ,下图为运行结果
其他类似问题
按默认排序
其他2条回答
则返回nullPtrNo徒浮碘荷鄢沽果朴de GetElem(PtrNode ls,若不存在,最后输出nullPtrNode LocateElem(PtrN是构造结构体的void InitList(PtrNode *ls)初始化结构体的, char key_name[32]) 查找第二个形参的值是否存在于ls指向的线性表中,输出指向该结点的指针,若存在typedef struct _Node{
char name[32],其中各个结点的name自己输入void TraverseList(PtrNode ls)
输出整个线性表;}Ntypedef struct _Node * PtrNode, int j) 输出第j个结点的指针void InsertNode(PtrNode p,第一个结点为nothingvoid CreateList(PtrNode ls, int n) 创建一个结点数为n的线性表;
struct _Node *next
没什么难的呀,估计你是不理解指针吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言用欧几里得算法定义的求最大公约数的函数没看懂,哪位大神能解释一下?具体到每一步骤。_百度知道
C语言用欧几里得算法定义的求最大公约数的函数没看懂,哪位大神能解释一下?具体到每一步骤。
int gcd(int x,int y){
{t=x;x=y;y=t;}
while(y!=0)
{t=x%y;x=y;y=t;}}
提问者采纳
{t=x;x=y;y=t;}
//交换,使得x是两数中最大值,y是最小值
while(y!=0)
{t=x%y;x=y;y=t;}
//算法核心,首先用x模y,取得余数,然后每次用除数模余数,直到整除为止
提问者评价
谢谢!懂啦
其他类似问题
最大公约数的相关知识
等待您来回答
您可能关注的推广
下载知道APP
随时随地咨询
出门在外也不愁读不懂求大神?解释一下*LinkList_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:243,621贴子:
读不懂求大神?解释一下*LinkList收藏
你应该懂LNode H的意思吧,那LinkList H就相当于LNode * H
最直接具有视觉效果的方法
sizeof(Lnode)
sizeof(LinkList)
你就会发现 后面那个是指针类型
会是一个int
指向node类型数据的一个指针?
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
使用签名档&&
为兴趣而生,贴吧更懂你。或本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助