數據結構c語言源代碼
㈠ c語言數據結構(考題,測試你的能力)--編寫源代碼
考考自己吧
人不能總能依靠別人.
㈡ 數據結構:產品進銷存管理系統的源代碼(c語言或c++的)
&(p->salesquantity),&(p->salestime).year),&((p->salestime).month),&((p->salestime).day)); p->nextproct=q->nextproct;
q->nextproct=p;
q=p
}
}
return ok;
}//ProctInsert
void ProQuantity_add(sqmountlink&L,char pkindname 1[],char pname 1[],int n)
{//添加順序表掛接鏈表的某產品的總量,且需添加的產品總量為n
int i,k;
plinklist p;
for(i=0;i<L.length;i++)
{
if(strcmp(L.kindelem[i]).pkindname,pkindname 1)!=0)
continue;
else
break;
}
if(i<L.length)
{
for(p=L.kindelem[i].firstproct;p!=NULL;p=p->nextproct)
{
k=strcnp(p->pname.pname);
if(k==0)
{
p->totalquantity=p->totalquantity+n;
printf("查看添加後產品的各項輸出:%s %d%d,%d %d %d,%d,%d\n",p-pname,p->totalquantity,(p->goodsdate).year,(p->goodsdate).month,(p->goods).day,
p->salequanlity,(p->salestime).year,(p->salestime).month,(p->salestime).day);
}
}
}
}//ProQuantity_add
void Visit(sqmountlink&L,char pkindname3[],char pname3[])
{//在順序表掛接鏈表L中,查詢屬於某產品類的某產品的各項信息
int i,k;
plinklist p;
for(i=0;i<L.length;i++)
{
if(strcmp((L.kindelem[i]),pkindname.pkindname3)!=0)
continue
else
break;
}
if(i<L.length)
{
for(p=L.kindelem[i].firstprodicy;p!=NULL;p=p->nextprocy)
{
k=strcmp(p->pname.pname3);
if(k==0)
break;
}
if(k!=0)
printf("此產品不存在:\n")
else
{
printf("輸出帶查詢產品的各項信息:\n");
printf("%s %s %d %d,%d,%d %d %d,%d,%d\n",(L.kindelem[i]).pkindname,p->pname,p->totalquantity,(p->goodsdate).year,(p->goodsdate).month,(p->goodsdate).day,
p->salequantity,(p->salestime).year,(p->salestime).month,(p->salestime).day);
}
}
}//Visit
void DisplayList(sqmountlink&L)
{//顯示各產品所屬產品類,產品名稱、產品總量,進貨日期,銷出數量,銷售時間
int i;
plinklist p;
printf("產品類 產品 進貨日期 銷出數量 銷售時間\n")
for(i=0;i<L.length;i++)
{
if(!(L.kindelem[i],firstproct))
printf("%s\n",(L.kindelem[i]).pkindname);
for(p=L.kindelem[i].firstproct;p;p=p->nextproct)
printf("%s %s %d %d,%d,%d %d %d,%d,%d \n",(L.kindelem[i]).pkindname,p->pname,p->totalquantity,(p->goodsdate).year,(P->goodsdate).month,(p->goodsdate).day,p->salesquantity,(p->salestime).year,(p->salestime).month,(p->salestime).day);
}
}//DisplayList
void DestoryMountList(sqmountlink&L)
{//銷毀已存在的順序表掛接鏈表L
int i;
kindlnode *p;
for(i=L.length;i>=0;
{
p=&(L.kindelem[i]);
if(*p).firstproct==NULL)
free(p);
else
{
while((*p).firstproct;q->nextproct;q=q->nextproct);
free(q);
}
free(q);
}
}
}//DestroyMountList
void menu_operation()
{//操作菜單
printf("----輸入所要執行操作:-------\n")
printf("----產品類的添加:1------\n");
printf("----產品的添加:2-----\n");
printf("----產品數量的添加:3-----\n");
printf("----查詢每種產品所屬產品類,產品總量,進貨日期,銷出數量,銷售時間:4-----------\n")
printf("----釋放L所佔內存空間,退出程序:0-----\n");
}//menu_operation
/*--------------主程序-------------*/
void main(void)
{
int order,
int i,n;
char a[30];
char b[30];
sqmountlink L;
InitMountList(L);
printf("-----創建初始的產品類、產品順序表掛接鏈表L-----\n");
CreatMuntList(L);
DisplayList(L);
printf("-----初始的產品類、產品順序表掛接鏈表L創建完成-----\n");
menu_operation();
loop:
printf("輸入命令:");
scanf("%d",&order);
switch(order)
{
case 1:
printf("需添加產品類的個數:");
scanf("%d",&i);
kindinsert(L,i);
printf("輸出修改後的產品庫存管理表:\n");
DisplayList(L);
goto loop;
case 2:
printf("需添加產品所屬產品類的名稱:")
scanf("%s",&a);
printf("需向此產品類添加產品的個數:");
scanf("%d",&i);
ProctInsert(L,a,i);
printf("輸出修改後的產品庫存管理表:\n");
DisplayList(L);
goto loop;
case 3:
printf("輸入需添加數量的產品所屬產品類的名稱:");
scanf("%s",&a);
printf("輸入需添加數量的產品的名稱:");
scanf("%d",&n);
ProQuantity_add(L,a,b,n);
printf("輸出修改後的產品庫存管理表:\n");
DisplayList(L);
goto loop ;
case 4:
printf("輸入待查詢產品所屬產品類的名稱:");
scanf("%s",&b);
printf("輸入待查詢產品的名稱:");
scanf(%s",&b);
Visit(L<a,b);
goto loop;
case ():
DestroyMountList(L);
exit(0);
}
}
㈢ C語言編程-數據結構課程設計-文本編輯器,已經提供代碼,若干問題
這是tongji university online judge的一道題,現在這個題庫已經沒有了,我把原題貼出來,你就知道這個程序什麼意思了
Problem
一個簡單的行編輯程序的功能是:接受用戶從終端輸入的程序或數據,並存入用戶的數據區。
由於用戶在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程序中,「每接受一個字元即存入用戶數據區」的做法顯然不是最恰當的。較好的做法是,設立一個輸入緩沖區,用以接受用戶輸入的一行字元,然後逐行存入用戶數據區。允許用戶輸入出差錯,並在發現有誤時可以及時更正。例如,當用戶發現剛剛鍵入的一個字元是錯的時,可補進一個退格符"#",以表示前一個字元無效;
如果發現當前鍵入的行內差錯較多或難以補救,則可以鍵入一個退行符"@",以表示當前行中的字元均無效。
如果已經在行首繼續輸入'#'符號無效。
Input
輸入一個多行的字元序列。但行字元總數(包含退格符和退行符)不大於250。
Output
按照上述說明得到的輸出。
Sample Input
whli##ilr#e(s#*s)
outcha@putchar(*s=#++);
Sample Output
while(*s)
putchar(*s++);
㈣ c璇璦鏁版嵁緇撴瀯鍗曢摼琛ㄧ殑鍒濆嬪寲 鎻掑叆 閿姣 鍏冪礌鐨勫彇鍑 鍒犻櫎 鎿嶄綔 奼傝︾粏C婧愪唬鐮 璋㈣阿銆傘傘傘
鍗曢摼琛ㄥ姛鑳藉ぇ鍏錛屽樋鍢
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int nDate;
struct node *pstnext;
}Node;
//閾捐〃杈撳嚭
void output(Node *head)
{
Node *p = head->pstnext;
while(NULL != p)
{
printf("%d ", p->nDate);
p = p->pstnext;
}
printf("\r\n");
}
//閾捐〃寤虹珛
Node* creat()
{
Node *head = NULL, *p = NULL, *s = NULL;
int Date = 0, cycle = 1;
head = (Node*)malloc(sizeof(Node));
if(NULL == head)
{
printf("鍒嗛厤鍐呭瓨澶辮觸\r\n");
return NULL;
}
head->pstnext = NULL;
p = head;
while(cycle)
{
printf("璇瘋緭鍏ユ暟鎹涓斿綋杈撳叆鏁版嵁涓0鏃剁粨鏉熻緭鍏\r\n");
scanf("%d", &Date);
if(0 != Date)
{
s = (Node*)malloc(sizeof(Node));
if(NULL == s)
{
printf("鍒嗛厤鍐呭瓨澶辮觸\r\n");
return NULL;
}
s->nDate = Date;
p->pstnext = s;
p = s;
}
else
{
cycle = 0;
}
}
p->pstnext = NULL;
return(head);
}
//鍗曢摼琛ㄦ祴闀
void length(Node *head)
{
Node *p = head->pstnext;
int j=0;
while(NULL != p)
{
p = p->pstnext;
j++;
}
printf("%d\r\n", j);
}
//閾捐〃鎸夊兼煡鎵
void research_Date(Node *head, int date)
{
Node *p;
int n=1;
p = head->pstnext;
while(NULL != p && date != p->nDate)
{
p = p->pstnext;
++n;
}
if(NULL == p)
{
printf("閾捐〃涓娌℃湁鎵懼埌璇ュ");
}else if(date == p->nDate)
{
printf("瑕佹煡鎵劇殑鍊%d鍦ㄩ摼琛ㄤ腑絎%d涓浣嶇疆\r\n", date, n);
}
return;
}
//鎸夊簭鍙鋒煡鎵
void research_Number(Node *head, int Num)
{
Node *p=head;
int i = 0;
while(NULL != p && i < Num)
{
p = p->pstnext;
i++;
}
if(p == NULL)
{
printf("鏌ユ壘浣嶇疆涓嶅悎娉\r\n");
}else if(i == 0)
{
printf("鏌ユ壘浣嶇疆涓哄ご緇撶偣\r\n");
}else if(i == Num)
{
printf("絎%d涓浣嶇疆鏁版嵁涓%d\r\n", i, p->nDate);
}
}
//鍦ㄦ寚瀹氬厓緔犱箣鍓嶆彃鍏ユ柊緇撶偣
void insert_1(Node *head, int i, int Newdate)
{
Node *pre = head, *New = NULL;
int j = 0;
while(NULL != pre && j < i-1)
{
pre = pre->pstnext;
j++;
}
if(NULL == pre || j > i-1)
{
printf("鎻掑叆浣嶇疆涓嶅瓨鍦\r\n");
}else
{
New = (Node*)malloc(sizeof(Node));
if(NULL == New)
{
printf("鍒嗛厤鍐呭瓨澶辮觸\r\n");
return;
}
New->nDate = Newdate;
New->pstnext = pre->pstnext;
pre->pstnext = New;
}
}
//鍦ㄦ寚瀹氬厓緔犱箣鍚庢彃鍏ユ柊緇撶偣
void insert_2(Node *head, int i, int Newdate)
{
Node *pre = head, *New = NULL;
int j = 0;
while(NULL != pre->pstnext && j < i)
{
pre = pre->pstnext;
j++;
}
if(j == i)
{
New = (Node*)malloc(sizeof(Node));
if(NULL == New)
{
printf("鍒嗛厤鍐呭瓨澶辮觸\r\n");
return;
}
New->nDate = Newdate;
New->pstnext = pre->pstnext;
pre->pstnext = New;
}else
{
printf("鎻掑叆浣嶇疆涓嶅瓨鍦\r\n");
}
}
//鍒犻櫎鎸囧畾緇撶偣
void Delete_1(Node *head, int i3)
{
Node *p = head, *pre = NULL;
int j = 0;
while(NULL != p && j < i3)
{
pre = p;
p = p->pstnext;
j++;
}
if(NULL == p)
{
printf("鍒犻櫎浣嶇疆涓嶅瓨鍦\r\n");
}else
{
pre->pstnext = p->pstnext;
free(p);
}
}
//鎸囧畾鍒犻櫎鍗曢摼琛ㄤ腑鏌愪釜鏁版嵁錛屽苟緇熻″垹闄ゆゆ暟鎹鐨勪釜鏁
int Delete_2(Node *head, int Delete_date)
{
int count = 0;
Node *p = head, *q;
while(NULL != p->pstnext)
{
q = p->pstnext;
if(q->nDate == Delete_date)
{
p->pstnext = q->pstnext;
free(q);
++count;
}
else
{
p = q;
}
}
return count;
}
//閾捐〃閫嗙疆
void Reverse_list(Node *head)
{
Node *q, *s;
if(NULL == head->pstnext || NULL == head->pstnext->pstnext)
{
return;
}
q = head->pstnext->pstnext;
head->pstnext->pstnext = NULL;
while(NULL != q)
{
s = q->pstnext;
q->pstnext = head->pstnext;
head->pstnext = q;
q = s;
}
}
//鍗曢摼琛ㄧ殑榪炴帴
void connect_list(Node *head, Node *head_New)
{
Node *p = head;
while(NULL != p->pstnext)
{
p = p->pstnext;
}
p->pstnext = head_New->pstnext;
}
//鍗曢摼琛ㄩ攢姣
void destroy_list(Node* head)
{
while (NULL != head)
{
Node* temp = head;
head = head->pstnext;
free(temp);
}
}
void main()
{
int date, num; //寰呮煡鎵炬暟鎹
int i3; //鎸囧畾鍒犻櫎鍏冪礌鐨勪綅緗
int i1, i2, Newdate_1, Newdate_2; //寰呮彃鍏ョ殑鏂版暟鎹
int Delete_date, k; //寰呭垹闄ょ殑鏁版嵁涓庡叾涓鏁
Node *Head = NULL; //瀹氫箟澶寸粨鐐
Node *Head_New = NULL;
//閾捐〃寤虹珛
Head = creat();
printf("杈撳嚭寤虹珛鐨勫崟閾捐〃\r\n");
output(Head);
//鍗曢摼琛ㄦ祴闀
printf("鍗曢摼琛ㄩ暱搴︿負\r\n");
length(Head);
//閾捐〃鎸夊兼煡鎵
printf("璇瘋緭鍏ュ緟鏌ユ壘鐨勬暟鎹\r\n");
scanf("%d", &date);
research_Date(Head, date);
//閾捐〃鎸夊簭鍙鋒煡鎵
printf("璇瘋緭鍏ュ緟鏌ユ壘搴忓彿\r\n");
scanf("%d", &num);
research_Number(Head, num);
//鍦ㄦ寚瀹氱琲1涓鍏冪礌涔嬪墠鎻掑叆鏂板厓緔燦ewdate
printf("鍦ㄦ寚瀹氱琲涓鍏冪礌涔嬪墠鎻掑叆鏂板厓緔燦ewdate");
printf("璇瘋緭鍏i涓庡厓緔犱笖浠ラ楀彿闂撮殧\r\n");
scanf("%d,%d", &i1, &Newdate_1);
insert_1(Head, i1, Newdate_1);
printf("鎻掑叆鍚庢柊閾捐〃\r\n");
output(Head);
//鍦ㄦ寚瀹氱琲2涓鍏冪礌涔嬪悗鎻掑叆鏂板厓緔燦ewdate
printf("鍦ㄦ寚瀹氱琲涓鍏冪礌涔嬪悗鎻掑叆鏂板厓緔燦ewdate");
printf("璇瘋緭鍏i涓庡厓緔犱笖浠ラ楀彿闂撮殧\r\n");
scanf("%d,%d", &i2, &Newdate_2);
insert_2(Head, i2, Newdate_2);
printf("鎻掑叆鍚庢柊閾捐〃\r\n");
output(Head);
//鎸囧畾鍒犻櫎i3鍏冪礌
printf("鍒犻櫎鍏冪礌鐨勪綅緗\r\n");
scanf("%d", &i3);
Delete_1(Head, i3);
printf("鍒犻櫎鍚庢柊閾捐〃\r\n");
output(Head);
//鎸囧畾鍒犻櫎鍗曢摼琛ㄤ腑鏌愪釜鏁版嵁錛屽苟緇熻″垹闄ゆゆ暟鎹鐨勪釜鏁
printf("璇瘋緭鍏ュ緟鍒犻櫎鐨勫厓緔\r\n");
scanf("%d", &Delete_date);
k = Delete_2(Head, Delete_date);
printf("鍒犻櫎鍚庢柊閾捐〃\r\n");
output(Head);
printf("鍒犻櫎鎸囧畾鍏冪礌鍦ㄩ摼琛ㄤ腑鐨勪釜鏁頒負錛");
printf("%d\r\n", k);
//鍗曢摼琛ㄩ嗙疆
Reverse_list(Head);
printf("閫嗙疆鍚庤緭鍑\r\n");
output(Head);
//鍗曢摼琛ㄧ殑榪炴帴
printf("寤虹珛涓涓鏂伴摼琛\r\n");
Head_New = creat();
printf("杈撳嚭鏂伴摼琛");
output(Head);
printf("灝嗘柊閾捐〃榪炴帴鍒板師鏉ラ摼琛ㄧ殑灝鵑儴騫惰緭鍑\r\n");
connect_list(Head, Head_New);
output(Head);
destroy_list(Head);
return;
}
㈤ 鏁版嵁緇撴瀯C璇璦鐢ㄦ爤瀹炵幇琛ㄨ揪寮忚$畻鍣錛屾眰瀹屾暣婧愪唬鐮侊紝閭綆[email protected]
#include<iostream>#include<sstream>#include<stack>#include<string>usingnamespacestd;floatstringToNum(conststring&str){istringstreamiss(str);floatnum;iss>>num;returnnum;}
intIn(stringc){if(c=="+"||c=="-"||c=="*"||c=="/"||c=="("||c==")"||c=="#")return1;elsereturn0;}
stringprocede(stringop1,stringop2){if(op1=="+"&&(op2=="*"||op2=="/"||op2=="("))return"<";if(op1=="+"&&(op2=="+"||op2=="-"||op2==")"||op2=="#"))return">";if(op1=="-"&&(op2=="*"||op2=="/"||op2=="("))return"<";if(op1=="-"&&(op2=="+"||op2=="-"||op2==")"||op2=="#"))return">";if(op1=="*"&&op2=="(")return"<";if(op1=="*"&&(op2=="+"||op2=="-"||op2=="*"||op2=="/"||op2==")"||op2=="#"))return">";if(op1=="/"&&op2=="(")return"<";if(op1=="/"&&(op2=="+"||op2=="-"||op2=="*"||op2=="/"||op2==")"||op2=="#"))return">";if(op1=="("&&op2==")")return"=";if(op1=="("&&(op2=="+"||op2=="-"||op2=="*"||op2=="/"||op2=="("))return"<";if(op1==")"&&(op2=="+"||op2=="-"||op2=="*"||op2=="/"||op2==")"||op2=="#"))return">";if(op1=="#"&&(op2=="+"||op2=="-"||op2=="*"||op2=="/"||op2=="("||op2=="#"))return"<";}
floatoperate(floata,stringop,floatb){if(op=="+")returna+b;if(op=="-")returna-b;if(op=="*")returna*b;if(op=="/")returna/b;}
intevaluateExpression(){floatnum1,num2;stack<float>OPND;//瀛樻斁榪愮畻鏁stack<string>OPTR;//瀛樻斁鎿嶄綔絎OPND.empty();OPTR.empty();OPTR.push("#");std::stringc;cin>>c;while(c!="#"||OPTR.top()!="#"){if(!In(c))//涓嶆槸榪愮畻絎﹁繘鏍{OPND.push(stringToNum(c));cin>>c;}else{//cout<<procede(OPTR.top(),c)<<endl;if(procede(OPTR.top(),c)=="<"){OPTR.push(c);cin>>c;}elseif(procede(OPTR.top(),c)=="="){OPTR.pop();cin>>c;}elseif(procede(OPTR.top(),c)==">"){stringop=OPTR.top();OPTR.pop();num1=OPND.top();OPND.pop();num2=OPND.top();OPND.pop();
OPND.push(operate(num2,op,num1));}}}if(!OPND.empty())returnOPND.top();elsereturn0;}
intmain(){while(1){cout<<evaluateExpression()<<endl;}system("pause");return0;}